Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
PFSGrid. Версия 1.0.
Компонент PFSGrid представляет аналог стандартного компонента ListBox, но обладающего несравненно большими возможностями. В частности, предусмотрена динамическая раскраска ячеек в зависимости от значений, редактирование содержимого ячеек, изменение положения строк и столбцов путем «перетаскивания» их на другое место и многое другое. На основе компоненты можно создавать удобные окна настройки параметров, информационные панели, редакторы таблиц и пр. Каждая ячейка способна хранить не только данные, но и описание этих данных, благодаря чему в режиме редактирования отображаются соответствующие экранные элементы.
Возможности:
- Редактирование значений в ячейке Широкий спектр поддерживаемых типов данных в ячейке с автоматическим выбором элемента редактирования в зависимости от типа данных в ячейке. Индивидуальная настройка каждой ячейки (редактирование, отображения) Изменение мышью ширины столбцов Перестановка мышью (Drag-and-drop) строк и столбцов Быстрая сортировка по любому столбцу. Возможность объявления любого компаратора для сортировки + три предопределенных компаратора Различные стили линий, отображение только горизонтальных, вертикальных или полной сетки. Отделенный уровень представления от внутренней логики, что позволяет использовать одну таблицу на разных панелях. Динамическое изменение цветов фона, текста, отображение соответствующих пиктограмм (стрелочки вверх/вниз) при изменении числовых величин. Встроенное меню видимости колонок. Черезстрочная подсветка, выделение строки, подсветка строки и столбца под курсором мыши и многое другое…
Общее описание таблицы.
Общий вид таблицы показан на рис. 1

Рис. 1. Общий вид таблицы.
Редактирование значений.
Как уже было сказано выше, каждая ячейка описывает с помощью объекта DynamicProperty[1] определенный элементарный тип данных. Соответственно, в зависимости от этого типа определяется экранный элемент, который будет отображен для этой ячейки во время редактирования. Для редактирования необходимо щелкнуть один или два раза по ячейке (в зависимости от флага EnableOneClickEditing)мышью. После этого на месте ячейки будет отображен элемент редактирования значения. При нажатии Enter редактирование завершается с принятием изменений. При нажатии ESC редактирование завершается без принятия изменений. Если был установлен флаг EnableOnUpdateValue, то любое изменение значения в экранном элементе будет сразу присвоено ячейке. Редактирование текущей ячейки автоматически завершиться, если пользователь перейдет к редактированию другой ячейки без завершения редактирования текущей. При этом принятие изменений зависит от флага EnableAutoApply. Если присвоить этому флагу значение true, то в описанном случае значение текущей ячейки будет обновлено, в противном случае останется без изменений.
Редактирование строковых величин.
Во время редактирования строковых значений (типа DynamicPropertyType. String) в ячейке появляется поле ввода текста (см. рис. 2.)

Рис 2. Поле ввода текста
Для того, чтобы дать пользователю возможность выбрать несколько строковых значений, необходимо для объекта DynamicProperty данной ячейки установить свойство Variants, представляющее собой массив строк-вариантов значений. В данном случае на экране будет отображен выпадающий список (рис.3). Установка EnableEditVariants динамического свойства в true включает для выпадающего списка возможность вручную редактировать текст. В противном случае значение строки может быть выбрано только из представленного списка.

Рис.3. Выпадающий список.
Редактирование чисел
Редактирование числовых величин осуществляется специальным полем ввода. (см. рис. 4)

Рис. 4. Поле ввода числовых величин. Редактируется вещественное число.
При этом изменение величины возможно с помощью пиктограмм со стрелками, а также колесиком прокрутки мыши. Приращение величины при изменении ее с помощью стрелок и колесика мыши определяется свойством Increment объекта DynamicProperty.
Редактирование булевых величин
Если ячейка описывает булевый тип, то в ней появляется пиктограмма «флажка» (рис. 5.) Для редактирования значения экранный элемент не используется, просто изменяется состояние пиктограммы в зависимости от значения ячейки.

Рис. 5 . Булевая величина в ячейке.
Редактирование стилей линий
При редактировании стиля линии в ячейке отображается список выбора стиля линии. Рис. 6.

Рис.6. Редактирование стиля линии.
Редактирование цветов
Если ячейка описывает цвет, то для редактирования используется список выбора цвета (рис. 7. )

Рис. 7. Редактирование цвета.
Редактирование толщины линий
Если ячейка описывает толщину линий, то для редактирования используется список выбора толщины линии.

Рис. 8. Список выбора толщины линии.
Редактирование рисунков
Если ячейка описывает рисунок (точнее индекс рисунка), то для редактирования используется список рисунков. Список рисунков формируется на основании массива описания рисунков Images[] объекта DynamicProperty.

Рис.9. Список выбора рисунка.
Редактирование имени файла
Если ячейка описывает имя файла, то для редактирования используется метка выбора имени файла:

Рис. 10. Выбор имени файла.
При этом нажатие кнопки «…» открывается стандартное диалоговое окно выбора имени файла. При нажатии кнопки «Х» имя файла сбрасывается в пустую строку.
Редактирование имени шрифта
Если ячейка описывает шрифт, то в режиме редактирования появляется метка выбора шрифта.

Рис. 11. Выбор шрифта.
При нажатии на кнопку «…», открывается стандартное диалоговое окно выбора имени шрифта. Редактирование завершается с общем порядке.
Редактирование даты и времени.
Если ячейка описывает дату, или время, то в режиме редактирования появляется элемент выбора даты или времени:

Рис. 12. Выбор даты или времени.
Режим кнопки
Если ячейка описывает кнопку, то в режиме редактирования на ее месте появляется кнопка. (Рис. 13)

Рис. 13. Режим кнопки.
Изменение видимости колонок
Видимость колонок изменяется с помощью контекстного меню, которое вызывается при щелчке правой кнопкой мыши по заголовку таблицы. Видимые колонки в этом меню будут отмечены флажками, кроме того, название колонки, ко заголовку которой произошел щелчок, будет выделен полужирным шрифтом. (Рис. 14.)

Рис. 14. Изменение видимости колонок.
Изменение ширины столбцов и сортировка
Ширина колонки изменяется с помощью мыши. Для этого нужно установить курсор на границу колонок, нажать левую кнопку и не отпуская ее, растянуть или сжать колонку. Курсор мыши при попадании на границу колонок меняет свой внешний вид.
Сортировка происходит при щелчке левой кнопкой по заголовку нужной колонки. При этом, сортировка произойдет только в том случае, если у заголовка есть компаратор (Свойство Comparer не сброшено в null). Направление сортировки выбирается автоматически, исходя из состояния поля LastSortState заголовка. Если это поле было установлено в SortNothing или в SortAscending, то сортировка будет выполняться по возрастанию, в противном случае, при значении поля SortDescending сортировка будет выполнена по убыванию. После сортировки значение поля меняется автоматически на противоположное, т. е. при значениях SortNothing или SortAscending после сортировки поле будет иметь значение SortDescending, а при значении SortDescening после сортировки поле будет иметь значение SortAscending. Для остальных колонок поле LastSortStrate будет установлено в SortNothing. Таким образом можно определить колонку и направление последней сортировки.
Перетягивание колонок и столбцов.
Для перетягивания строки или столбца необходимо щелкнуть по заголовку колонки или строке левой кнопкой мыши и «перетащить» ее на новое место, не отпуская кнопки. При этом место вставки строки или столбца будет отмечаться черным обрамлением (см. рис)

Рис. 15. Перетягивание колонки

Рис. 16. Перетягивание строки.
Перетягивание колонки разрешено только если установить свойство ColumnDragEnable в true. Перетягивание строк возможно только при установке свойтсва RowDragEnable в true.
Описание классов библиотеки.
Программная модель компоненты PFSGrid.

Таблица содержит два основных свойства: заголовок (PFColumnCollection) и коллекцию строк (PFItemCollection). Заголовок определяет количество столбцов. Каждый столбец описывается заголовком (PFColumn). Все строки, которые добавляются в коллекцию строк, должны иметь количество ячеек, равное количеству столбцов. В противном случае возникнет исключение. Каждая строка (PFItem) имеет коллекцию ячеек (PFSubItemCollection). Каждая ячейка (PFSubItem) имеет объект – динамическое свойство (DynamicProperty), которое описывает величину, хранимую данной ячейкой.
Динамические свойства.
Динамическое свойство
Динамическое свойство представляет собой класс, способный описывать несколько самых распространенных элементарных типов данных. Каждая ячейка таблицы связана с динамическим свойством. В зависимости от того что описывает этот объект, в ячейке отображается соответствующая информация, кроме того, при редактировании ячейки таблица сама устанавливает необходимый экранный элемент, подходящий для этого свойства. В настоящей версии таблицы динамическое свойство поддерживает около десятка элементарных типов, таких, как целые и вещественные числа, строки и логические величины, а также структуры типа Color, DashStyle или DateTime. Кроме того, есть более узкая специализация, например имя файла или толщина линии. Эти свойства в своей основе базируются на элементарных типах string или int, но в ячейках отображаются иначе, как в обычном режиме, так и в режиме редактирования.
PFS. GUI. Controls. PFSGrid. DynamicProperty | Динамическое свойство. |
Конструктор | |
DynamicProperty (Object[] par) | Параметрический конструктор. Количество аргументов зависит от того, какую величину описывает динамическое свойство и от самого свойства. При этом минимальное количество аргументов - 0 иначе свойства устанавливаются по умолчанию. Порядок аргументов: "par[0]"> (object) - Значение свойства "par[1]"> (DynamicPropertyType) Тип свойства "par[2]"> (string) Имя свойства "par[3]"> (decimal) Минимальное значение для чисел "par[4]"> (decimal) Максимальное значение для чисел "par[5]"> (int) Число знаков после десятичной точки "par[6]"> (decimal) Инкремент для вещественных чисел "par[7]"> (string) Группа, к которой принадлежит данный свойтсво "par[8]"> (bool) Возможность изменения данного динамического в выпадающем списке, во время редактирования ячейки таблицы |
Методы | |
Название | Описание |
Void SetProperty (Object prop_val, DynamicPropertyType prop_type) | Установить значение динамического свойства |
String ToString() | Строковое представление динамического свойства |
DynamicProperty. GetClone() | Получение глубокой копии динамического свойства - не клонируется только список рисунков |
DynamicProperty CreateProperty (Object prop_value, DynamicPropertyType prop_type, String prop_name, String prop_group) | Создание динамического свойства по основным параметрам |
DynamicProperty CreateProperty (Object prop_value, DynamicPropertyType prop_type, String prop_name, String prop_name, Boolean prop_visible) | Создание динамического свойства по основным параметрам |
Свойство | |
Название | Описание |
String[] Variants | Ссылка на массив с вариантами значений. Если эта ссылка не обнулена, то вместо текстового поля ввода в режиме редактирования будет показан выпадающий список. |
Bool EnableEditVariant | Разрешить редактирование вариантов Если установить это свойство в true, то выпадающий список позволит ввести свое значение, в противном случае, строковая величина может быть выбрана только из списка. |
PFSImageItem[] Images | Список пиктограмм, которые будут выводиться в выпадающий список в режиме редактирования. Это свойство имеет смысл, когда объект DynamicProperty описывает пиктограмму. |
FileTypes[]FileTypes | Список допустимых расширений файлов. Это свойство имеет смысл, когда объект DynamicProperty описывает имя файла |
Decimal Minimum | Минимальное значение только для числовых величин. По умолчанию устанавливается в MinInteger(4 байта знаковое). |
Decimal Maximum | Максимальное значение только для числовых величин. По умолчанию устанавливается в MaxInteger(4 байта знаковое) |
Int32 DecimalPlaces | Число знаков после точки. Имеет смысл только когда объект DynamicProperty описывает вещественное число. По умолчанию свойство равно 0. |
Decimal Increment | Инкремент. Имеет смысл только для объектов DynamicProperty, которые описывают вещественное число. Этот инкремент используется во время редактирования ячейки в таблице. По умолчанию - 1. |
DynamicPropertyType PropertyType | Тип, который описан объектом DynamicProperty. По умолчанию, объект описывает целое со знаком (Integer). |
Object PropertyValue | Значение свойства. По умолчанию целое и равно нулю. |
LineStyles LineStyles | Стиль линий в выпадающем списке выбора стиля линии. Пакет стилей линий определяется классом LineStyles. |
String PropertyName | Имя свойства. По умолчанию - пустая строка |
String PropertyGroup | Группа, к которой принадлежит данное динамическое свойство. По умолчанию – пустая строка. |
Bool PropertyVisible | Отображать или не отображать данное динамическое свойство в окне настроек. (Это универсальное окно на основе компонента PFSGrid) |
Bool Enabled | Активность данного динамического свойства в списках окна настроек. По умолчанию объект DynamicProperty позволяет активность. |
Список динамических свойств.
Данный класс группирует несколько объектов типа DynamicProperty, обеспечивая внутреннюю индексацию, и упорядочивание.
PFS. GUI. Controls. PFSGrid. DynamicPropertyList | Список динамических свойств. Список не синхронизирован. Поддерживает глубокое копирование (Клонирование) |
Методы | |
Название | Описание |
Void Add(DynamicProperty property) | Добавление объекта DynamicProperty в список. Если ссылка на этот экземпляр уже присутствует в списке, то метод ничего не добавляет. |
Void Remove(DynamicProperty property) | Удалить объект DynamicProperty из списка. Если такого параметра в списке нет, то ничего не происходит. |
Void RemoveAt(Int32 index) | Удалить объект DynamicProperty по индексу в списке. При этом, если индекс вышел за границы допустимых значений – ничего не происходит. |
Void Clear() | Удалить все объекта DynamicProperty из списка. |
DynamicProperty[] GetGroupArray(String group_name) | Получить массив со ссылками на все объекты DynamicProperty, которые принадлежат конкретной группы. В качестве параметра метод получает название группы. |
String[] GetGroups() | Метод вернет массив строк, содержащий названия всех групп, которые присутствуют в данном списке. |
Int32 IndexOf(DynamicProperty property) | Получить индекс объекта DynamicProperty в списке. При этом, если такой объект не найден, метод вернет -1. |
DynamicPropertyList GetClone() | Получение списка – клона текущего. |
Void CopyTo(DynamicPropertyList destination) | Производит глубокое копирование текущего списка в список dеstination. |
Void Copy (DynamicPropertyList source, DynamicPropertyList destination) | Статический метод. Глубокое копирование одного списка в другой. |
Свойства | |
Название | Описание |
Int32 Count | Количество объектов DynamicProperty в списке. |
Int32 GroupCount | Количество групп в списке. |
Int32 MaxGroupCount | Максимальное количество объектов DynamicProperty, принадлежащих к одной группе. |
DynamicProperty Item(Int32 index) | Доступ к объекту DynamicProperty по индексу. Доступно только для чтения |
DynamicProperty Item(String name) | Доступ к объекту DynamicProperty по имени. Доступно только для чтения |
Таблица.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


