Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
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 Описание всех классов приведены ниже

Новости мира IT:

Архив новостей

Последние комментарии:

Loading

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...