2005 г.
Работа с таблицами PFSGrid
Гасанов Ровшан Закариевич, ведущий
.NET-разработчик
компании
PFSoft,
Microsoft Certified Application Developer
Скачать библиотеку компонента с примером (50,8 кб.)
Компонент PFSGrid представляет аналог стандартного компонента ListBox, но обладающего несравненно большими возможностями. В частности, предусмотрена динамическая раскраска ячеек в зависимости от значений, редактирование содержимого ячеек, изменение положения строк и столбцов путем «перетаскивания» их на другое место и многое другое. На основе компоненты можно создавать удобные окна настройки параметров, информационные панели, редакторы таблиц и пр. Каждая ячейка способна хранить не только данные, но и описание этих данных, благодаря чему в режиме редактирования отображаются соответствующие экранные элементы.
Возможности:
- Редактирование значений в ячейке
- Широкий спектр поддерживаемых типов данных в ячейке с автоматическим выбором элемента редактирования в зависимости от типа данных в ячейке.
- Индивидуальная настройка каждой ячейки (редактирование, отображения)
- Изменение мышью ширины столбцов
- Перестановка мышью (Drag-and-drop) строк и столбцов
- Быстрая сортировка по любому столбцу.
- Возможность объявления любого компаратора для сортировки + три предопределенных компаратора
- Различные стили линий, отображение только горизонтальных, вертикальных или полной сетки.
- Отделенный уровень представления от внутренней логики, что позволяет использовать одну таблицу на разных панелях.
- Динамическое изменение цветов фона, текста, отображение соответствующих пиктограмм (стрелочки вверх/вниз) при изменении числовых величин.
- Встроенное меню видимости колонок.
- Черезстрочная подсветка, выделение строки, подсветка строки и столбца под курсором мыши и многое другое…
Общее описание таблицы.
Общий вид таблицы показан на рис. 1
Рис. 1. Общий вид таблицы.
Редактирование значений.
Как уже было сказано выше, каждая ячейка описывает с помощью объекта DynamicProperty1 определенный элементарный тип данных. Соответственно, в зависимости от этого типа определяется экранный элемент, который будет отображен для этой ячейки во время редактирования. Для редактирования необходимо щелкнуть один или два раза по ячейке (в зависимости от флага EnableOneClickEditing)мышью. После этого на месте ячейки будет отображен элемент редактирования значения. При нажатии Enter редактирование завершается с принятием изменений. При нажатии ESC редактирование завершается без принятия изменений. Если был установлен флаг EnableOnUpdateValue, то любое изменение значения в экранном элементе будет сразу присвоено ячейке. Редактирование текущей ячейки автоматически завершиться, если пользователь перейдет к редактированию другой ячейки без завершения редактирования текущей. При этом принятие изменений зависит от флага EnableAutoApply. Если присвоить этому флагу значение true, то в описанном случае значение текущей ячейки будет обновлено, в противном случае останется без изменений.
Редактирование строковых величин.
Во время редактирования строковых значений (типа DynamicPropertyType.String) в ячейке появляется поле ввода текста (см. рис. 2.)
Рис 2. Поле ввода текста
Для того, чтобы дать пользователю возможность выбрать несколько строковых значений, необходимо для объекта DynamicProperty данной ячейки установить свойство Variants, представляющее собой массив строк-вариантов значений. В данном случае на экране будет отображен выпадающий список (рис.3). Установка EnableEditVariants динамического свойства в true включает для выпадающего списка возможность вручную редактировать текст. В противном случае значение строки может быть выбрано только из представленного списка.
Рис.3. Выпадающий список.
Редактирование чисел
Редактирование числовых величин осуществляется специальным полем ввода. (см. рис. 4)
Рис. 4. Поле ввода числовых величин. Редактируется вещественное число.
При этом изменение величины возможно с помощью пиктограмм со стрелками, а также колесиком прокрутки мыши. Приращение величины при изменении ее с помощью стрелок и колесика мыши определяется свойством Increment объекта DynamicProperty.
Редактирование булевых величин
Если ячейка описывает булевый тип, то в ней появляется пиктограмма «флажка» (рис. 5.) Для редактирования значения экранный элемент не используется, просто изменяется состояние пиктограммы в зависимости от значения ячейки.
Рис. 5. Булевая величина в ячейке.
Редактирование стилей линий
При редактировании стиля линии в ячейке отображается список выбора стиля линии.
Рис. 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 по имени. Доступно только для чтения |
Таблица.
Базовая таблица.
PFS.GUI.Controls.PFSGrid.BaseGrid |
Базовая таблица. Служит только для отображения информации |
Методы |
Название |
Описание |
Int32 GetHeaderHeight() |
Возвратит высоту заголовка независимо от значения свойства HeaderVisible |
Void SetHeaderHeight(Int32 height) |
Задаст высоту заголовка независимо от значения свойства HeaderVisible и режима работы |
Void SortColumn(Int32 col_number) |
Сортировка по колонке. Если у данной колонки отсутствует компаратор, то будет создан общий строковый компаратор.
Внимание! Метод вызывает событие OnSort. Если в таблице одна строка, то событие OnSort не вызывается.
Направление выбирается автоматически, исходя из состояния свойства LastSortDirection выбранной колонки. Метод после сортировки автоматически переключает это свойство в другое направление, при этом у всех остальных колонок это свойство сбрасывается в неопределенное состояние. |
Void RevalidateSubItem(PFSubItem sub_item, Bool refresh_all) |
Вывести на экран только эту ячейку. В качестве параметра принимает на вход ссылку на ячейку
и режим перерисовки. Если второй параметр установить в true, то будет перерисована вся таблица, иначе в зависимости от значения свойства DirectDraw будет перерисована только эта ячейка |
События |
Название |
Описание |
ClickedEventHandler SelectedIndexChanged |
Произошла смена индекса |
ClickedEventHandler ColumnClickedEvent |
Происходит при клике на заголовок колонки |
ColumnResizeEventDelegate OnColumnResize |
Происходит при изменении ширины колонки |
EventHandler OnSort |
Происходит после сортировки |
EventHandler OnBeforeSort |
Происходит непосредственно перед сортировкой |
DragEventHandler ColumnDrag |
Событие происходит при перетягивании колонок |
DragEventHandler RowDrag |
Событие происходит при перетягивании строк |
Свойства |
Названия |
Описание |
Bool BackgroundStretchToFit |
Растянуть рисунок фона на заднем плане на всю таблицу или нет |
Bool Selectable |
Возможность выделять строки |
Bool HeaderWordWrap |
Переносить текст заголовка, если он не помещается в ячейке. |
Bool ItemWordWrap |
Перенос текста в ячейке, если он не помещается |
Color SuperFlatHeaderColor |
Цвет фона плоского заголовка таблицы |
PFControlStyles ControlStyle |
Стиль заголовков колонок |
Bool ShowBorder |
Показывать или нет бордюр |
Int32 WeelScroll |
Разрешить или запретить прокрутку содержимого таблицы с помощью колесика мыши
Если установить 0, то прокрутка выключена. Число больше нуля - шаг прокрутки при одном щелчке колесика |
Color SelectedTextColor |
Цвет текста выбранных строк |
Color HotTrackingColor |
Цвет подсветки колонки и строки курсором мыши |
Bool HotItemTracking |
Включить или выключить подсвечивание строки курсором |
Bool HotColumnTracking |
Включить или выключить подсвечивание колонки курсором |
Bool ShowFocusRect |
Показывать обрамление текущей строки |
Bool AllowColumnResize |
Разрешить или запретить изменение ширины колонок |
Bool AutoHeight |
Автоматическая установка высоты |
Bool HeaderVisible |
Видимость заголовка |
PFColumnCollection Columns |
Коллекция заголовков колонок |
PFItemCollection Items |
Коллекция строк |
Color SelectionColor |
Цвет выбранных строк |
Bool FullRowSelect |
Выбирать полную строку или нет |
Bool AllowMultiselect |
Разрешить выделение нескольких строк |
Int32 BorderPadding |
Внутренняя ширина бордюра |
PFGridLineStyle GridLineStyle |
Стиль линий сетки |
PFGridTypes GridTypes |
Тип сетки |
PFGridLines GridLines |
Линии сетки |
Color GridColor |
Цвет линий сетки |
Int32 ItemHeight |
Высота строк |
Int32 HeaderHeight |
Высота заголовка |
Int32 CellPaddingSize |
Ширина бордюров ячейки |
Bool Streakiness |
Включить чередование строк в таблице. |
ArrayList SelectedItems |
Возвращает список выделенных строк |
ArrayList SelectedIndicies |
Возвращает список выделенных индексов |
Int32 HotColumnIndex |
Номер текущей подсвеченной колонки |
Int32 HotItemIndex |
Номер текущей подсвеченной строки |
PFItem FocusedItem |
Текущая строка |
Int32 Count |
Текущее количество строк в таблице |
Int32 TotalRowHeight |
Общая высота всех строк таблицы в пикселах |
Int32 VisibleRowsCount |
Количество строк, которые отображаются на экране в текущий момент |
Int32 MaxHeight |
Максимальная высота любой строки в пикселах |
Bool DirectDraw |
Включение режима рисования прямо на канве при обновлении значения ячейки, или через событие OnPaint с очередью |
Bool CellEditEnable |
Разрешить или запретить редактирование таблицы |
Bool RowDragEnable |
Разрешить или запретить перетягивание строк в таблице |
Bool ColumnDragEnable |
Разрешить или запретить перетягивание столбцов |
Bool BlockClickOnHeader |
Блокировать событие Click по заголовку |
Bool BlockDoubleClickOnHeader |
Блокировать событие DoubleClick по заголовку |
Bool ShowColumnVisibleMenu |
Показывать или прятать меню видимости колонок. Меню появляется при щелчке правой кнопкой по заголовку. |
Таблица с расширенными возможностями (редактирование)
PFS.GUI.Controls.PFSGrid.PFSGrid |
Таблица, унаследованная от базовой. Включены возможности редактирования. |
Методы |
Название |
Описание |
Void CompleteEditing(Bool apply_changes) |
Принудительно завершить редактирование ячейки. При этом если передать в качестве параметра true - текущее значения будет принято, в противном случае текущее изменение не принимается. Не рекомендуется вызывать метод внутри конструкций |
Bool IsEdited(PFSubItem sub_item) |
Проверяет, редактируется ли данная ячейка |
Void Resort(Bool reverse) |
Пересортировать таблицу согласно ее последнему состоянию. Если передать true, то таблица будет отсортирована в обратном порядке |
События |
Название |
Описание |
EventHandler OnBeforeEditCell |
Происходит перед редактированием значения ячейки |
EventHandler OnAfterEditCell |
Происходит при завершении редактирования ячейки |
EventHandler OnValueChange |
Происходит в том случае, если значение элемента редактирования значения ячейки изменяется, но редактирование ячейки не завершается. Это событие будет вызвано только в том случае, если у ячейки установлен флаг EnableOnUpdateValue |
EventHandler OnNumericValueChange |
Происходит, когда в качестве редактирующего элемента в текущий момент используется числовое поле ввода. При изменении его значения, при этом будут передаваться ссылки на ячейки, для которых это событие произошло. |
EventHandler OnTextBoxTextChange |
Происходит, если текущим элементом редактирования является поле ввода текста. При этом, событие будет происходить при изменении текста, в качестве параметра будет передаваться ссылка на редактируемую ячейку. |
EventHandler OnDateTimeChange |
Происходит, если текущим элементов редактирования ячейки является элемент выбора даты. При этом, событие будет происходить при изменении даты, в качестве параметра будет передана ссылка на редактируемую ячейку. |
EventHandler OnComboBoxTextChange |
Происходит, если текущим элементов редактирования ячейки является выпадающий список. При этом, событие будет происходить при изменении индекса выбранного элемента, в качестве параметра будет передана ссылка на редактируемую ячейку. |
Свойства |
Названия |
Описание |
XmlNode XmlSettings |
Xml представление таблицы |
Bool IsEditing |
Признак редактирования ячейки. Не рекомендуется использовать внутри конструкций lock() |
Внутреннее представление таблицы.
Заголовок колонки.
Заголовок представляет собой коллекцию заголовков колонок. Заголовок колонок представлен классом PFColumn и имеет свойства и методы, перечисленные ниже.
PFS.GUI.Controls.PFSGrid.PFColumn |
Заголовок колонки |
Свойства |
Название |
Описание |
Dictionary Dictionary |
Словарь для данной колонки. Автоматически пополняется при добавлении строк в таблицу. Данный объект полезен для накопления информации по значениям в колонках при организации фильтров. Внимание! При изменении значения ячеек у строк, уже добавленных в таблицу, обновления информации не происходит! |
BaseComparer Comparer |
Компаратор сортировки для данного столбца. Если равен null, то сортировка по щелчку мыши для этой колонки работать не будет. При этом если запустить сортировку вызовом метода SortColumn таблицы, величины в ячейках сравниваются как строки |
Bool Visible |
Видимость столбца |
Int32 ImageIndex |
Индекс пиктограммы, отображаемой в колонке |
System.Windows.Form.ContentAlighment TextAlignment |
Выравнивание текста в колонке |
SortDirection LastSortState |
Направление последней сортировки. Задание значения через это свойство вызовет установку этого свойства в состояние SortNothing для остальных колонок. |
Int32 Width |
Ширина колонки |
String Text |
Текст заголовка в колонке |
String Name |
Внутреннее имя колонки. По этому имени работает индексатор коллекции. |
ColumnStates State |
Состояние колонки |
Методы |
Название |
Описание |
Void SetLastSortDirection (SortDirections direct) |
Установить свойство LastSortState без корректировки остальных колонок. Это означает, что установка свойства через этот метод не вызовет изменения свойств LastSortState у остальных колонок. |
Заголовок таблицы.
Заголовок таблицы представляет собой коллекцию заголовков колонок.
PFS.GUI.Controls.PFSGrid.PFColumnCollection |
Заголовок таблицы |
Методы |
Название |
Описание |
Void AddToDictionary(PFItem item) |
Добавить в словарь значения из строки |
Void RemoveFromDictionary(PFItem item) |
Удалить из словаря значения строки |
Void ClearDictionaries() |
Очистить все словари |
Void RollRight(Int32 count) |
Циклический сдвиг заголовков вправо на count позиций |
Void RollRight() |
Циклический сдвиг заголовков вправо на одну позицию |
Void RollLeft(Int32 count) |
Циклический сдвиг заголовков влево на count позиций |
Void RollLeft() |
Циклический сдвиг заголовков влево на одну позицию |
Void MoveRight(Int32 index) |
Сместить заголовок с индексом index на одну позицию вправо |
Void MoveLeft(Int32 index) |
Сместить заголовок с индексом index на одну позицию влево |
Void ShiftMove(Int32 from, Int32 to) |
Переместить заголовок с позиции from на позицию to cо сдвигом ячеек внутри диапазона [from..to] |
Void SimpleMove(Int32 form, Int32 to) |
Поменять местами ячейки в позициях from и to |
Void Int GetColumnIndex(String name) |
Получить текущий индекс колонки |
Void Int GetStartIndex(PFColumn column) |
Получить начальный индекс колонки. Начальный индекс присваивается заголовку (или колонке) в момент ее добавления в таблицу. При этом в течении жизни таблицы он не меняется. Текущий индекс может быть изменен (либо программным путем, либо через перетаскивание колонки пользователем) |
PFColumn GetColumnByStartIndex(Int32 start_index) |
Получить ссылку на колонку по ее стартовому индексу |
Int32 GetColX(Int32 number) |
Получить сумму ширин всех видимых колонок до колонки с номером number. |
Void Add(PFColumn column) |
Добавить заголовок в коллекцию колонок |
Void Add(String name, Int32 width) |
Добавить заголовок в коллекцию колонок и именем и шириной колонки. |
Void Add(String name, Int32, width, System.Windows.Forms.HorizontalAlignment alignment) |
Добавить заголовок в коллекцию колонок с именем, шириной колонки и выравниванием текста. |
Void AddRange(PFColumn[] columns) |
Добавить пакет заголовков в коллекцию колонок. |
Void Remove(PFColumn column) |
Удалить колонку из коллекции |
Void RemoveAt(Int32 index) |
Удалить колонку из коллекции. В качестве индекса удаления выступает начальный индекс, а не текущее положение колонки в коллекции. |
Void Clear() |
Удалить все колонки из коллекции |
Void IndexOf(PFColumn column) |
Вернуть текущий индекс колонки. |
Void ClearStates() |
Сбросить все состояния колонок (Установка свойств State в csNone) |
Void ClearHotStates() |
Установить в csNone свойства только тех колонок, которые имеют свойство State равное csHot |
Bool AnyPressed() |
Вернет true, если хотя бы одно свойство State установлено в csHot |
Свойства |
Свойство |
Описание |
PFColumn Item(Int32 index) |
Индексатор |
PFColumn Item(String name) |
Индексатор по имени колонки |
Int32 Width |
Общая ширина всех колонок |
Класс – ячейка таблицы (PFSubItem)
PFS.GUI.Controls.PFSGrid.PFSubItem |
Класс - ячейка строки таблицы |
Методы |
Название |
Описание |
Void SetImageIndex(Int32 image_index) |
Установка свойства ImageIndex без перерисовки таблицы |
Void SetImage(Bitmap bitmap) |
Установка картинки (свойства Image) без перерисовки ячейки |
Void SetImageAlignment ( System.Windows.Forms.HorizontalAlignment alignment) |
Установка свойства ImageAligment без перерисовки таблицы |
Void SetTextAligment( System.Drawing.ContentAlignment alignment ) |
Установка свойства TextAligment без перерисовки таблицы |
Void SetProperty (Object prop_value, DynamicPropertyType prop_type) |
Установить значение динамического свойства ячейки вместе с его типом. Типы передаваемого объекта и описание типа в терминах DynamicPropertyType должны совпадать. При этом значение текста в ячейке также будет изменено. |
Void SetProperty(Object prop_value) |
Установить только значение динамического свойства в ячейке. Тип передаваемого объекта и тип, описанный ячейкой должны совпадать. Вызов метода также изменит значение текста. |
Void SetText(String text) |
Установка текста без перерисовки таблицы |
Void SetForeColor(Color color) |
Установка свойства ForeColor без перерисовки таблицы |
Void SetBackColor(Color color) |
Установка свойства BackColor без перерисовки таблицы |
Void SetSelected(Bool selected) |
Установка свойства Selected без перерисовки основной таблицы |
Void SetDecimalPlaces(Int32 decimal_places, Bool refresh) |
Установить количество знаков после точки при отображении. Имеет смысл только для вещественных чисел. |
Void SetNonColoredValue(Decimal val, String text) |
Задать значение типа decimal и текст без перерисовки таблицы |
Void SetNonColoredValue(Decimal val, String text, Bool refresh) |
Изменить значение типа decimal и текст с обновлением информации в ячейке |
Void SetNonColoredValue(Decimal val) |
Задать значение типа decimal без перерисовки таблицы. |
Void SetValue(Decimal val, String text, Bool refresh) |
Метод введен дополнительно для ProTrader. Метод задает ячейке вещественное значение, но в качестве текста отображается значение параметра appearance. |
Свойства |
Название |
Описание |
System.Windows.Forms.HorizontalAlignment ImageAlignment |
Выравнивание пиктограммы внутри ячейки |
SetTextAligment(System.Drawing.ContentAlignment TextAlignment |
Выравнивание текста внутри ячейки |
Object Tag |
Дополнительная информация или связанный с этой ячейкой объект |
Bool BeingEdited |
Признак того, что данная ячейка в данный момент редактируется |
String LocalKey |
Ключ локализации |
DynamicProperty Property |
Описание свойства для редактирования. Режим редактирования для этой ячейки не работает, если это свойство обнулено, или EnableEditing установлено в false |
Bool EnabledEditing |
Разрешить или запретить редактирование ячейки. |
Bool EnableOneClickEditing |
Разрешить или запретить редактирование по одному щелчку. По умолчанию для редактирования ячейки необходимо дважды щелкнуть по ней. При этом, если в этот момент редактировалась какая-нибудь другая ячейка, ее редактирование завершается. |
Bool EnableOnUpdateValue |
Разрешить или изменение значения ячейки при изменении значения элемента редактировании При этом редактирование значения ячейки продолжается. |
Bool EnableAutoApply |
Если установить данный флаг, то изменения в ячейке будут приняты автоматически при завершении редактирования в случае передачи фокуса другой ячейке. Внимание! Если для этой ячейки был установлен флаг EnableOnUpdateValue, то значение ячейки будет изменено, если изменялось значение в элемент редактирования. Таким образом, в этом случае, значение флага EnableAutoApply не имеет смысла. |
Object Obj |
Дополнительный объект, связанный с данной ячейкой. |
Int32 ValueCode |
Номер ячейки в колонке. Устанавливается программой-пользователем. Дополнительно введен в целях оптимизации распознавания ячейки в событиях изменения. |
Bool IsButtoned |
Поле в режиме редактирования будет представлять собой кнопку. При этом, поведение кнопки аналогично поведению любого другого элемента редактирования. Кнопка вызывает событие OnButtonPushed. Значение ячейки в этом случае не меняется. |
String Text |
Текст в ячейке |
Color ForeColor |
Цвет текста в ячейке |
Color BackColor |
Цвет фона в ячейке |
Bool Selected |
Признак принадлежности ячейки к выделенной строке. |
Bool EnableArrowing |
Разрешить или запретить появление стрелок (пиктограмм) |
Bool BorderedArrows |
Пиктограммы с ободком или без |
Bool EnableColoring |
Разрешить изменение цвета ячейки при задании значений. |
Color UpBackColor |
Цвет фона ячейки при увеличении значения ячейки. Данное свойство имеет смысл только для чисел. |
Color DownBackColor |
Цвет фона ячейки при уменьшении значения ячейки. Данное свойство имеет смысл только для чисел. |
Color NoChangeBackColor |
Цвет фона ячейки, если задаваемое значение равно значению ячейки. Данное свойство имеет смысл только для чисел. |
Color UpForeColor |
Цвет текста ячейки при увеличении значения ячейки. Данное свойство имеет смысл только для чисел. |
Color DownForeColor |
Цвет текста ячейки при уменьшении значения ячейки. Данное свойство имеет смысл только для чисел. |
Color NoChangeForeColor |
Цвет текста ячейки, если задаваемое значение равно значению ячейки. Данное свойство имеет смысл только для чисел. |
Decimal Value |
Числовое значение, задаваемое ячейке. Присвоение числового значения ячейке через это свойств влияет на раскраску ячейки и рисование пиктограмм. При этом, динамическое свойство должно описывать либо целый, либо вещественный тип. В противном случае попытка задать значение приведет к исключению. |
Класс – коллекция ячеек.
PFS.GUI.Controls.PFSGrid.PFSubItemCollection |
Коллекция ячеек |
Методы |
Название |
Описание |
Void RollRight(Int32 count) |
Циклический сдвиг строки вправо на count позиций |
Void RollRight() |
Циклический сдвиг строки вправо на одну позицию |
Void RollLeft(Int32 count) |
Циклический сдвиг строки влево на count позиций |
Void RollLeft() |
Циклический сдвиг строки влево на одну позицию |
Void MoveRight(Int32 count) |
Сместить ячейку и индексом count на одну позицию вправо |
Void MoveLeft(Int32 count) |
Сместить ячейку с индексом count на одну позицию влево |
Void ShiftMove(Int32 from, Int32 to) |
Переместить колонку с позиции from на позицию to cо сдвигом ячеек внутри диапазона [from..to] |
Void SimpleMove(Int32 from, Int32 to) |
Поменять местами ячейки в позициях from и to |
Void AddRange(PFSubItem[] sub_items) |
Добавить пакет ячеек в строку |
Void Add(PFSubItem sub_item) |
Добавить ячейку в конец строки. |
Void Insert(Int32 index, PFSubItem sub_item) |
Вставка ячейки в строку в определенное место. |
Void Remove(Int32 index) |
Удалить ячейку с определенным индексом из строки |
Void Remove(PFSubItem sub_item) |
Удалить ячейку из строки |
Void ClearSelection() |
Сбросить все флаги, обозначающие выделение ячейки |
Void IndexOf(PFSubItem sub_item) |
Получить индекс соответствующего элемента |
Свойство |
Название |
Описание |
PFSubItem Item(Int32 index) |
Индексатор |
Bool EnableArrowing |
Разрешить или запретить показ стрелочек при изменении |
Bool BorderedArrows |
Стрелочки с каймой |
Bool EnableColoring |
Разрешить раскраску в динамические цвета |
Color UpBackColor |
Цвет фона ячейки при увеличении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color DownBackColor |
Цвет фона ячейки при уменьшении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color NoChangeBackColor |
Цвет фона ячейки, если задаваемое значение равно значению ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color UpForeColor |
Цвет текста ячейки при увеличении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color DownForeColor |
Цвет текста ячейки при уменьшении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color NoChangeForeColor |
Цвет текста ячейки, если задаваемое значение равно значению ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color BackColor |
Цвет фона всех ячеек. Устанавливает данное свойство для всех ячеек. |
Color ForeColor |
Свет символов всех ячеек. Устанавливает данное свойство для всех ячеек. |
Класс – строка
PFS.GUI.Controls.PFSGrid.PFItem |
Объект - строка таблицы |
Методы |
Название |
Описание |
Void SetSelected(Bool selected) |
Просто установить признак принадлежности к выделенным строкам. При этом, значение этого флага для всех остальных строк коллекции не изменяется. |
Свойства |
Название |
Описание |
PFSubItemCollection SubItems |
Коллекция ячеек |
Color BackColor |
Цвет фона. При установке распространяется на все ячейки строки. |
Color RowBorderColor |
Цвет обрамления |
Object Tag |
Ссылка на связанный со строкой объект |
Object Obj |
Дополнительный связанный объект. Если установить его, то эта ссылка будет присвоена свойству Obj для всех ячеек. (Это основное отличие от свойства Tag) |
Color ForeColor |
Цвет текста. При установке распространяется на все ячейки строки. |
Bool Selected |
Флаг - строка выделена |
Класс – коллекция строк
PFS.GUI.Controls.PFSGrid.PFItemCollection |
Коллекция строк |
Методы |
Название |
Описание |
Void RollRight(Int32 count) |
Циклический сдвиг строки вправо на count позиций |
Void RollRight() |
Циклический сдвиг строки вправо на одну позицию |
Void RollLeft(Int32 count) |
Циклический сдвиг всех строк влево на count позиций |
Void RollLeft() |
Циклический сдвиг всех строк влево на одну позицию |
Void MoveRight(Int32 count) |
Сместить ячейку с индексом index во всех строках на одну позицию вправо |
Void MoveLeft(Int32 count) |
Сместить ячейку с индексом index во всех строках на одну позицию влево |
Void ShiftMove(Int32 from, Int32 to) |
Переместить колонку с позиции from на позицию to cо свигом ячеек внутри диапазона [from..to] |
Void SimpleMove(Int32 from, Int32 to) |
Поменять местами ячейки в позициях from и to для всех строк. |
Void SelectAllItems() |
Выделить все ячейки |
Void AddRange(PFItem[] items) |
Добавить пакет строк |
Void Add(PFItem item) |
Добавить строку в конец таблицы. |
Void Insert(Int32 index, PFItem item) |
Рабочий метод. Добавить строку в коллекцию в место, определенное индексом nIndex |
Void Clear() |
Удалить все строки. Рабочий метод |
Void Remove(Int32 index) |
Удалить строку с индексом nItemIndex |
Void Remove(PFItem item) |
Удалить строку из таблицы |
Void ClearSelection() |
Сбросить всем строкам таблицы флаг выделения |
Void ClearSelection(PFItem item) |
Сбросить флаг выделения всем строкам, кроме одной, ссылка на которую передается в качестве параметра |
Int32 GetNextSelectedItemIndex(Int32 index) |
Определить номер выделенной строки, начиная поиск с позиции nStartIndex |
Int32 FindItemIndex(PFItem item) |
Определить индекс выделенной строки |
Bool IsItemPresent(PFItem item, Int32 from, Int32 to) |
Определить индекс выделенной строки. Поиск проводится в заданном диапазоне |
Void Sort(IComparer comparer) |
Сортировка коллекции. В качестве параметра передается компаратор |
Void Sort(Int32 column, SortDirections direction) |
Сортировка коллекции по колонке. Метод контролирует переданный на вход номер колонки и если он выходит за границы - ничего не делает |
Свойства |
Название |
Описание |
PFItem Item(Int32 index) |
Индексатор |
ArrayList SelectedItems |
Вернуть массив выделенных ячеек |
ArrayList SelectedIndicies |
Вернуть массив индексов выделенных строк |
Bool EnableArrowing |
Разрешить или запретить показ стрелочек при изменении |
Bool BorderedArrows |
Стрелочки с каймой |
Bool EnableColoring |
Разрешить раскраску в динамические цвета |
Color UpBackColor |
Цвет фона ячейки при увеличении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color DownBackColor |
Цвет фона ячейки при уменьшении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color NoChangeBackColor |
Цвет фона ячейки, если задаваемое значение равно значению ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color UpForeColor |
Цвет текста ячейки при увеличении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color DownForeColor |
Цвет текста ячейки при уменьшении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color NoChangeForeColor |
Цвет текста ячейки, если задаваемое значение равно значению ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. |
Color BackColor |
Цвет фона всех ячеек. Устанавливает данное свойство для всех ячеек. |
Color ForeColor |
Свет символов всех ячеек. Устанавливает данное свойство для всех ячеек. |
Вспомогательные типы.
Общие
PFS.GUI.Controls.PFSGrid.LineStyles |
Класс – описание вариантов для динамического свойства, описывающего стили линий. Этот класс необходим для определения содержимого выпадающего списка редактирования стиля линии. По умолчанию в динамическом свойстве устанавливается класс, описывающий стандартное перечисление DashStyle .NET Framework |
Предопределенные значения |
Название |
Описание |
LineStyles Standard |
Описание встроенных в .NET Framework стилей линий |
Свойство |
Название |
Описание |
String[] Names |
Массив имен стилей линий. |
DashStyles[] Style |
Стиль отображения. |
PFS.GUI.Controls.PFSGrid.PFSImageItem |
Класс – описание пиктограммы для ячейки выбора рисунка. При клонировании динамического свойства этот элемент не клонируется для нового экземпляра, а происходит простая передача ссылки. |
Свойство |
Название |
Описание |
String Name |
Название пиктограммы |
Image Style |
Пиктограмма |
Object Tag |
Связанный с этой пиктограммой объект. |
PFS.GUI.Controls.PFSGrid.FileTypes |
Класс – описание типа файла для ячейки выбора имени файла. |
Методы |
Название |
Описание |
FileTypes(string type, string ext) |
Конструктор. В качестве параметра передаются тип файла и его расширение. Например FileTypes("All files (*.*)", "*.*"). По умолчанию ячейка выбирает все файлы. |
Аргументы событий редактирования
Щелчок (или двойной щелчок) по ячейке
PFS.GUI.Controls.PFSGrid.ClickEventArgs |
Событие - щелчок мыши |
Свойство |
Название |
Описание |
Int32 ItemIndex |
Индекс строки, по которой щелкнули |
Int 32 ColumnIndex |
Индекс столбца, по которому щелкнули |
Изменение ширины колонки
PFS.GUI.Controls.PFSGrid.ColumnResizeEventArgs |
Аргументы события "Изменение ширины колонки" |
Свойство |
Название |
Описание |
Int32 ColumnIndex |
Номер столбца |
Int32 ColumnWidth |
Текущая ширина столбца |
Редактирование ячейки
PFS.GUI.Controls.PFSGrid.CellEditEventArgs |
Аргументы для события - редактирование значения ячейки |
Свойства |
Название |
Описание |
PFSubItem SubItem |
Ссылка на редактируемую ячейку. |
Int32 CellCol |
Индекс выделенной колонки |
Int32 CellRow |
Индекс выделенной строки |
DynamicProperty Property |
Динамическое свойство, с которым связана ячейка |
Bool Entered |
1. Если true - редактируемые значения приняты
2. Если false - отмена принятия значений.
3. Tercium Non Datur :)) |
Щелчок мышью по кнопке в ячейке
PFS.GUI.Controls.PFSGrid.CellButtonArgs |
Аргументы события ButtonPushed |
Свойства |
Название |
Описание |
Int32 Row |
Номер строки, в которой нажата кнопка |
Int32 Col |
Номер столбца, в котором нажата кнопка |
Изменение величины в элементе редактирования без завершения режима редактирования
PFS.GUI.Controls.PFSGrid.ValueChangeArgs |
Аргументы события ValueChange |
Свойства |
Название |
Описание |
PFSubItem SubItem |
Ячейка, значение которой динамически редактируется |
DynamicProperty NewValue |
Вернуть значение в формате DynamicProperty |
Изменение индекса или текста в выпадающем списке без завершения редактирования
Таблица 1.
Перетягивание колонки или строки
PFS.GUI.Controls.PFSGrid.DragEventArgs |
Аргументы события перетягивания колонки или столбца |
Константы |
Название |
Описание |
Int32 COLUMN_DRAGGED |
Перетянута колонка |
Int32 ROW_DRAGGED |
Перетянута строка |
Свойства |
Название |
Описание |
Int32 Action |
Описание действия, которое произошло. |
Int32 From |
Исходная позиция колонки или строки |
Int32 To |
Новая позиция колонки или строки |
PFS.GUI.Controls.PFSGrid.SortEventArgs |
Аргументы события сортировки |
Свойства |
Название |
Описание |
Int32 Column |
Номер колонки, по которой будет производится сортировка |
SortDirection Direction |
Направление сортировки |
Bool Cancel |
Отменить или разрешить сортировку. Если установить в true, то сортировка не будет произведена |
Компараторы
Компараторы устанавливаются заголовкам колонок и определяют алгоритм сравнения строк при сортировке. Компаратор должен быть построен на базе стандартного базового компаратора PFBaseComparer и реализовывать стандартный интерфейс .NET IComparer.
PFS.GUI.Controls.PFSGrid.PFBaseComparer |
Базовый компаратор.На основе этого компаратора должны быть все компараторы |
Свойства |
Название |
Описание |
SortDirection Direction |
Направление сортировки |
Int32 Column |
Номер колонки для сортировки |
Библиотекой уже предопределены три компаратора:
PFItemComparer |
Компаратор сравнения строк. Значения в ячейках сравниваются как строки. |
PFItemNumericComparer |
Компаратор сравнения строк. Значения в ячейках сравниваются как числа |
PFItemDateComparer |
Компаратор сравнения строк. Значения в ячейках сравниваются как даты |
Перечисления
PFS.GUI.Controls.PFSGrid.ColumnStates |
Текущее состояние колонок |
Значение |
Описание |
csNone |
Колонка в нормальном состоянии |
csPressed |
Колонка в состоянии - нажата |
csHot |
Курсор над колонкой, но кнопки не нажаты |
Таблица 2.
PFS.GUI.Controls.PFSGrid.SortDirections |
Направление сортировки колонок |
Значение |
Описание |
SortNothing |
Неопределенное состояние сортировки |
SortAscending |
Сортировка по возрастанию |
SortDescending |
Сортировка по убыванию |
PFS.GUI.Controls.PFSGrid.ListStates |
Состояние таблицы |
Значение |
Описание |
stateNone |
Обычное |
stateSelecting |
Выбрана строка |
stateColumnSelect |
Выбрана колонка |
stateColumnResizing |
Колонка в данный момент выбирается (или изменяется ее ширина) |
PFS.GUI.Controls.PFSGrid.PFListRegion |
Область таблицы |
Значение |
Описание |
header |
Область заголовка |
client |
Область, занятая строками (таблица) |
nonclient |
Область вне строк таблицы |
PFS.GUI.Controls.PFSGrid.PFGridLines |
Направление линий сетки |
Значение |
Описание |
gridNone |
Нет линий |
gridBoth |
Горизонтальные и вертикальные линии |
gridVertical |
Только вертикальные линии |
gridHorizontal |
Только горизонтальные линии |
PFS.GUI.Controls.PFSGrid.PFGridTypes |
Тип сетки, можно установить сетку на всю область,
занимаемую таблицей,
или только на область, занимаемую ячейками |
Значение |
Описание |
gridNormal |
Линии сетки рисуются в пределах всей таблицы |
gridOnExists |
Горизонтальные линии рисуются только в пределах ширины ячеек |
PFS.GUI.Controls.PFSGrid.PFControlStyles |
Стиль заголовков колонок |
Значение |
Описание |
Normal |
Обычный |
SuperFlat |
Плоские заголовки |
1 Описание всех классов приведены ниже
|
|