Copyright © PFSoft. 2005 www.pfsoft.com PFSGrid. Версия 1.0. Компонент PFSGrid представляет аналог стандартного компонента ListBox, но обладающего несравненно большими возможностями. В частности, предусмотрена динамическая раскраска ячеек в зависимости от значений, редактирование содержимого ячеек, изменение положения строк и столбцов путем «перетаскивания» их на другое место и многое другое. На основе компоненты можно создавать удобные окна настройки параметров, информационные панели, редакторы таблиц и пр. Каждая ячейка способна хранить не только данные, но и описание этих данных, благодаря чему в режиме редактирования отображаются соответствующие экранные элементы. Возможности: Редактирование значений в ячейке Широкий спектр поддерживаемых типов данных в ячейке с автоматическим выбором элемента редактирования в зависимости от типа данных в ячейке. Индивидуальная настройка каждой ячейки (редактирование, отображения) Изменение мышью ширины столбцов Перестановка мышью (Drag-and-drop) строк и столбцов Быстрая сортировка по любому столбцу. Возможность объявления любого компаратора для сортировки + три предопределенных компаратора Различные стили линий, отображение только горизонтальных, вертикальных или полной сетки. Отделенный уровень представления от внутренней логики, что позволяет использовать одну таблицу на разных панелях. Динамическое изменение цветов фона, текста, отображение соответствующих пиктограмм (стрелочки вверх/вниз) при изменении числовых величин. Встроенное меню видимости колонок. Черезстрочная подсветка, выделение строки, подсветка строки и столбца под курсором мыши и многое другое… Общее описание таблицы. Общий вид таблицы показан на рис. 1 Рис. 1. Общий вид таблицы. Copyright © PFSoft. 2005 www.pfsoft.com Редактирование значений. Как уже было сказано выше, каждая ячейка описывает с помощью объекта DynamicProperty1 определенный элементарный тип данных. Соответственно, в зависимости от этого типа определяется экранный элемент, который будет отображен для этой ячейки во время редактирования. Для редактирования необходимо щелкнуть один или два раза по ячейке (в зависимости от флага EnableOneClickEditing)мышью. После этого на месте ячейки будет отображен элемент редактирования значения. При нажатии Enter редактирование завершается с принятием изменений. При нажатии ESC редактирование завершается без принятия изменений. Если был установлен флаг EnableOnUpdateValue, то любое изменение значения в экранном элементе будет сразу присвоено ячейке. Редактирование текущей ячейки автоматически завершиться, если пользователь перейдет к редактированию другой ячейки без завершения редактирования текущей. При этом принятие изменений зависит от флага EnableAutoApply. Если присвоить этому флагу значение true, то в описанном случае значение текущей ячейки будет обновлено, в противном случае останется без изменений. Редактирование строковых величин. Во время редактирования строковых значений (типа DynamicPropertyType.String) в ячейке появляется поле ввода текста (см. рис. 2.) Рис 2. Поле ввода текста Для того, чтобы дать пользователю возможность выбрать несколько строковых значений, необходимо для объекта DynamicProperty данной ячейки установить свойство Variants, представляющее собой массив строк-вариантов значений. В данном случае на экране будет отображен выпадающий список (рис.3). Установка EnableEditVariants динамического свойства в true включает для выпадающего списка возможность вручную редактировать текст. В противном случае значение строки может быть выбрано только из представленного списка. Рис.3. Выпадающий список. 1 Описание всех классов приведены ниже Copyright © PFSoft. 2005 www.pfsoft.com Редактирование чисел Редактирование числовых величин осуществляется специальным полем ввода. (см. рис. 4) Рис. 4. Поле ввода числовых величин. Редактируется вещественное число. При этом изменение величины возможно с помощью пиктограмм со стрелками, а также колесиком прокрутки мыши. Приращение величины при изменении ее с помощью стрелок и колесика мыши определяется свойством Increment объекта DynamicProperty. Редактирование булевых величин Если ячейка описывает булевый тип, то в ней появляется пиктограмма «флажка» (рис. 5.) Для редактирования значения экранный элемент не используется, просто изменяется состояние пиктограммы в зависимости от значения ячейки. Рис. 5 . Булевая величина в ячейке. Copyright © PFSoft. 2005 www.pfsoft.com Редактирование стилей линий При редактировании стиля линии в ячейке отображается список выбора стиля линии. Рис. 6. Рис.6. Редактирование стиля линии. Редактирование цветов Если ячейка описывает цвет, то для редактирования используется список выбора цвета (рис. 7. ) Рис. 7. Редактирование цвета. Copyright © PFSoft. 2005 www.pfsoft.com Редактирование толщины линий Если ячейка описывает толщину линий, то для редактирования используется список выбора толщины линии. Рис. 8. Список выбора толщины линии. Редактирование рисунков Если ячейка описывает рисунок (точнее индекс рисунка), то для редактирования используется список рисунков. Список рисунков формируется на основании массива описания рисунков Images[] объекта DynamicProperty. Рис.9. Список выбора рисунка. Copyright © PFSoft. 2005 www.pfsoft.com Редактирование имени файла Если ячейка описывает имя файла, то для редактирования используется метка выбора имени файла: Рис. 10. Выбор имени файла. При этом нажатие кнопки «…» открывается стандартное диалоговое окно выбора имени файла. При нажатии кнопки «Х» имя файла сбрасывается в пустую строку. Редактирование имени шрифта Если ячейка описывает шрифт, то в режиме редактирования появляется метка выбора шрифта. Рис. 11. Выбор шрифта. При нажатии на кнопку «…», открывается стандартное диалоговое окно выбора имени шрифта. Редактирование завершается с общем порядке. Редактирование даты и времени. Если ячейка описывает дату, или время, то в режиме редактирования появляется элемент выбора даты или времени: Copyright © PFSoft. 2005 www.pfsoft.com Рис. 12. Выбор даты или времени. Режим кнопки Если ячейка описывает кнопку, то в режиме редактирования на ее месте появляется кнопка. (Рис. 13) Рис. 13. Режим кнопки. Copyright © PFSoft. 2005 www.pfsoft.com Изменение видимости колонок Видимость колонок изменяется с помощью контекстного меню, которое вызывается при щелчке правой кнопкой мыши по заголовку таблицы. Видимые колонки в этом меню будут отмечены флажками, кроме того, название колонки, ко заголовку которой произошел щелчок, будет выделен полужирным шрифтом. (Рис. 14.) Рис. 14. Изменение видимости колонок. Изменение ширины столбцов и сортировка Ширина колонки изменяется с помощью мыши. Для этого нужно установить курсор на границу колонок, нажать левую кнопку и не отпуская ее, растянуть или сжать колонку. Курсор мыши при попадании на границу колонок меняет свой внешний вид. Сортировка происходит при щелчке левой кнопкой по заголовку нужной колонки. При этом, сортировка произойдет только в том случае, если у заголовка есть компаратор (Свойство Comparer не сброшено в null). Направление сортировки выбирается автоматически, исходя из состояния поля LastSortState заголовка. Если это поле было установлено в SortNothing или в SortAscending, то сортировка будет выполняться по возрастанию, в противном случае, при значении поля SortDescending сортировка будет выполнена по убыванию. После сортировки значение поля меняется автоматически на противоположное, т.е. при значениях SortNothing или SortAscending после сортировки поле будет иметь значение SortDescending, а при значении SortDescening после сортировки поле будет иметь значение SortAscending. Для остальных колонок поле LastSortStrate будет установлено в SortNothing. Таким образом можно определить колонку и направление последней сортировки. Copyright © PFSoft. 2005 www.pfsoft.com Перетягивание колонок и столбцов. Для перетягивания строки или столбца необходимо щелкнуть по заголовку колонки или строке левой кнопкой мыши и «перетащить» ее на новое место, не отпуская кнопки. При этом место вставки строки или столбца будет отмечаться черным обрамлением (см. рис) Рис. 15. Перетягивание колонки Рис. 16. Перетягивание строки. Перетягивание колонки разрешено только если установить свойство ColumnDragEnable в true. Перетягивание строк возможно только при установке свойтсва RowDragEnable в true. Copyright © PFSoft. 2005 www.pfsoft.com Описание классов библиотеки. Программная модель компоненты PFSGrid. Таблица содержит два основных свойства: заголовок (PFColumnCollection) и коллекцию строк (PFItemCollection). Заголовок определяет количество столбцов. Каждый столбец описывается заголовком (PFColumn). Все строки, которые добавляются в коллекцию строк, должны иметь количество ячеек, равное количеству столбцов. В противном случае возникнет исключение. Каждая строка (PFItem) имеет коллекцию ячеек (PFSubItemCollection). Каждая ячейка (PFSubItem) имеет объект – динамическое свойство (DynamicProperty), которое описывает величину, хранимую данной ячейкой. Динамические свойства. Динамическое свойство Динамическое свойство представляет собой класс, способный описывать несколько самых распространенных элементарных типов данных. Каждая ячейка таблицы связана с динамическим свойством. В зависимости от того что описывает этот объект, в ячейке отображается соответствующая информация, кроме того, при редактировании ячейки таблица сама устанавливает необходимый экранный элемент, подходящий для этого свойства. В настоящей версии таблицы динамическое свойство поддерживает около десятка элементарных типов, таких, как целые и вещественные числа, строки и логические величины, а также структуры типа Color, DashStyle или DateTime. Кроме того, есть более узкая специализация, например имя файла или толщина линии. Эти свойства в своей основе базируются на элементарных типах string или int, но в ячейках отображаются иначе, как в обычном режиме, так и в режиме редактирования. Copyright © PFSoft. 2005 www.pfsoft.com Динамическое свойство. 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 Список пиктограмм, которые будут выводиться в выпадающий список в режиме редактирования. Это свойство имеет смысл, когда объект Copyright © PFSoft. 2005 www.pfsoft.com DynamicProperty описывает пиктограмму. Список допустимых расширений файлов. Это свойство имеет смысл, когда объект DynamicProperty описывает имя файла Минимальное значение только для числовых величин. По умолчанию устанавливается в MinInteger(4 байта знаковое). Максимальное значение только для числовых величин. По умолчанию устанавливается в MaxInteger(4 байта знаковое) Число знаков после точки. Имеет смысл только когда объект DynamicProperty описывает вещественное число. По умолчанию свойство равно 0. Инкремент. Имеет смысл только для объектов DynamicProperty, которые описывают вещественное число. Этот инкремент используется во время редактирования ячейки в таблице. По умолчанию - 1. Тип, который описан объектом DynamicProperty. По умолчанию, объект описывает целое со знаком (Integer). Значение свойства. По умолчанию целое и равно нулю. Стиль линий в выпадающем списке выбора стиля линии. Пакет стилей линий определяется классом LineStyles. Имя свойства. По умолчанию - пустая строка Группа, к которой принадлежит данное динамическое свойство. По умолчанию – пустая строка. Отображать или не отображать данное динамическое свойство в окне настроек. (Это универсальное окно на основе компонента PFSGrid) Активность данного динамического свойства в списках окна настроек. По умолчанию объект DynamicProperty позволяет активность. FileTypes[]FileTypes Decimal Minimum Decimal Maximum Int32 DecimalPlaces Decimal Increment DynamicPropertyType PropertyType Object PropertyValue LineStyles LineStyles String PropertyName String PropertyGroup Bool PropertyVisible Bool Enabled Список динамических свойств. Данный класс группирует несколько объектов типа DynamicProperty, обеспечивая внутреннюю индексацию, и упорядочивание. Список динамических свойств. Список не синхронизирован. Поддерживает глубокое копирование (Клонирование) Методы Описание Добавление объекта DynamicProperty в список. Если ссылка на этот экземпляр уже присутствует в списке, то метод ничего не добавляет. Удалить объект DynamicProperty из списка. Если PFS.GUI.Controls.PFSGrid.DynamicPropertyLis t Название Void Add(DynamicProperty property) Void Remove(DynamicProperty property) Copyright © PFSoft. 2005 www.pfsoft.com такого параметра в списке нет, то ничего не происходит. 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 по имени. Доступно только для чтения Copyright © PFSoft. 2005 www.pfsoft.com Таблица. Базовая таблица. Базовая таблица. Служит только для отображения информации Методы Название Описание 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, то прокрутка выключена. Число PFS.GUI.Controls.PFSGrid.BaseGrid Copyright © PFSoft. 2005 www.pfsoft.com 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 Bool CellEditEnable Bool RowDragEnable Bool ColumnDragEnable Bool BlockClickOnHeader Bool BlockDoubleClickOnHeader Bool ShowColumnVisibleMenu больше нуля - шаг прокрутки при одном щелчке колесика Цвет текста выбранных строк Цвет подсветки колонки и строки курсором мыши Включить или выключить подсвечивание строки курсором Включить или выключить подсвечивание колонки курсором Показывать обрамление текущей строки Разрешить или запретить изменение ширины колонок Автоматическая установка высоты Видимость заголовка Коллекция заголовков колонок Коллекция строк Цвет выбранных строк Выбирать полную строку или нет Разрешить выделение нескольких строк Внутренняя ширина бордюра Стиль линий сетки Тип сетки Линии сетки Цвет линий сетки Высота строк Высота заголовка Ширина бордюров ячейки Включить чередование строк в таблице. Возвращает список выделенных строк Возвращает список выделенных индексов Номер текущей подсвеченной колонки Номер текущей подсвеченной строки Текущая строка Текущее количество строк в таблице Общая высота всех строк таблицы в пикселах Количество строк, которые отображаются на экране в текущий момент Максимальная высота любой строки в пикселах Включение режима рисования прямо на канве при обновлении значения ячейки, или через событие OnPaint с очередью Разрешить или запретить редактирование таблицы Разрешить или запретить перетягивание строк в таблице Разрешить или запретить перетягивание столбцов Блокировать событие Click по заголовку Блокировать событие DoubleClick по заголовку Показывать или прятать меню видимости колонок. Меню появляется при щелчке правой кнопкой по заголовку. Copyright © PFSoft. 2005 www.pfsoft.com Таблица с расширенными возможностями (редактирование) PFS.GUI.Controls.PFSGrid.PFSGrid Название Void CompleteEditing(Bool apply_changes) Bool IsEdited(PFSubItem sub_item) Void Resort(Bool reverse) Название EventHandler OnBeforeEditCell EventHandler OnAfterEditCell EventHandler OnValueChange EventHandler OnNumericValueChange EventHandler OnTextBoxTextChange EventHandler OnDateTimeChange EventHandler OnComboBoxTextChange Названия XmlNode XmlSettings Bool IsEditing Таблица, унаследованная от базовой. Включены возможности редактирования. Методы Описание Принудительно завершить редактирование ячейки. При этом если передать в качестве параметра true текущее значения будет принято, в противном случае текущее изменение не принимается. Не рекомендуется вызывать метод внутри конструкций Проверяет, редактируется ли данная ячейка Пересортировать таблицу согласно ее последнему состоянию. Если передать true, то таблица будет отсортирована в обратном порядке События Описание Происходит перед редактированием значения ячейки Происходит при завершении редактирования ячейки Происходит в том случае, если значение элемента редактирования значения ячейки изменяется, но редактирование ячейки не завершается. Это событие будет вызвано только в том случае, если у ячейки установлен флаг EnableOnUpdateValue Происходит, когда в качестве редактирующего элемента в текущий момент используется числовое поле ввода. При изменении его значения, при этом будут передаваться ссылки на ячейки, для которых это событие произошло. Происходит, если текущим элементом редактирования является поле ввода текста. При этом, событие будет происходить при изменении текста, в качестве параметра будет передаваться ссылка на редактируемую ячейку. Происходит, если текущим элементов редактирования ячейки является элемент выбора даты. При этом, событие будет происходить при изменении даты, в качестве параметра будет передана ссылка на редактируемую ячейку. Происходит, если текущим элементов редактирования ячейки является выпадающий список. При этом, событие будет происходить при изменении индекса выбранного элемента, в качестве параметра будет передана ссылка на редактируемую ячейку. Свойства Описание Xml представление таблицы Признак редактирования ячейки. Не рекомендуется использовать внутри конструкций lock() Copyright © PFSoft. 2005 www.pfsoft.com Внутреннее представление таблицы. Заголовок колонки. Заголовок представляет собой коллекцию заголовков колонок. Заголовок колонок представлен классом PFColumn и имеет свойства и методы, перечисленные ниже. PFS.GUI.Controls.PFSGrid.PFColumn Название Dictionary Dictionary BaseComparer Comparer Bool Visible Int32 ImageIndex System.Windows.Form.ContentAlighment TextAlignment SortDirection LastSortState Заголовок колонки Свойства Описание Словарь для данной колонки. Автоматически пополняется при добавлении строк в таблицу. Данный объект полезен для накопления информации по значениям в колонках при организации фильтров. Внимание! При изменении значения ячеек у строк, уже добавленных в таблицу, обновления информации не происходит! Компаратор сортировки для данного столбца. Если равен null, то сортировка по щелчку мыши для этой колонки работать не будет. При этом если запустить сортировку вызовом метода SortColumn таблицы, величины в ячейках сравниваются как строки Видимость столбца Индекс пиктограммы, отображаемой в колонке Выравнивание текста в колонке Направление последней сортировки. Задание значения через это свойство вызовет установку этого свойства в состояние SortNothing для остальных колонок. Int32 Width Ширина колонки String Text Текст заголовка в колонке String Name Внутреннее имя колонки. По этому имени работает индексатор коллекции. ColumnStates State Состояние колонки Методы Название Описание Void SetLastSortDirection (SortDirections direct) Установить свойство LastSortState без корректировки остальных колонок. Это означает, что установка свойства через этот метод не вызовет изменения свойств LastSortState у остальных колонок. Copyright © PFSoft. 2005 www.pfsoft.com Заголовок таблицы. Заголовок таблицы представляет собой коллекцию заголовков колонок. PFS.GUI.Controls.PFSGrid.PFColumnCollectio Заголовок таблицы n Методы Название Описание 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 свойства только тех колонок, Copyright © PFSoft. 2005 www.pfsoft.com Bool AnyPressed() Свойство PFColumn Item(Int32 index) PFColumn Item(String name) Int32 Width которые имеют свойство State равное csHot Вернет true, если хотя бы одно свойство State установлено в csHot Свойства Описание Индексатор Индексатор по имени колонки Общая ширина всех колонок Класс – ячейка таблицы (PFSubItem) PFS.GUI.Controls.PFSGrid.PFSubItem Название Void SetImageIndex(Int32 image_index) Void SetImage(Bitmap bitmap) Void SetImageAlignment ( System.Windows.Forms.HorizontalAlignment alignment) Void SetTextAligment( System.Drawing.ContentAlignment alignment ) Void SetProperty (Object prop_value, DynamicPropertyType prop_type) Класс - ячейка строки таблицы Методы Описание Установка свойства ImageIndex без перерисовки таблицы Установка картинки (свойства Image) без перерисовки ячейки Установка свойства ImageAligment без перерисовки таблицы Void SetProperty(Object prop_value) Void SetText(String text) Void SetForeColor(Color color) Void SetBackColor(Color color) Void SetSelected(Bool selected) Void SetDecimalPlaces(Int32 decimal_places, Bool refresh) Void SetNonColoredValue(Decimal val, String text) Void SetNonColoredValue(Decimal val, String text, Bool refresh) Void SetNonColoredValue(Decimal val) Void SetValue(Decimal val, String text, Bool refresh) Установка свойства TextAligment без перерисовки таблицы Установить значение динамического свойства ячейки вместе с его типом. Типы передаваемого объекта и описание типа в терминах DynamicPropertyType должны совпадать. При этом значение текста в ячейке также будет изменено. Установить только значение динамического свойства в ячейке. Тип передаваемого объекта и тип, описанный ячейкой должны совпадать. Вызов метода также изменит значение текста. Установка текста без перерисовки таблицы Установка свойства ForeColor без перерисовки таблицы Установка свойства BackColor без перерисовки таблицы Установка свойства Selected без перерисовки основной таблицы Установить количество знаков после точки при отображении. Имеет смысл только для вещественных чисел. Задать значение типа decimal и текст без перерисовки таблицы Изменить значение типа decimal и текст с обновлением информации в ячейке Задать значение типа decimal без перерисовки таблицы. Метод введен дополнительно для ProTrader. Метод задает ячейке вещественное значение, но в качестве текста отображается значение Copyright © PFSoft. 2005 www.pfsoft.com параметра appearance. Свойства Описание Выравнивание пиктограммы внутри ячейки Название System.Windows.Forms.HorizontalAlignment ImageAlignment SetTextAligment(System.Drawing.ContentAlignment TextAlignment Object Tag Bool BeingEdited String LocalKey DynamicProperty Property Bool EnabledEditing Bool EnableOneClickEditing Bool EnableOnUpdateValue Bool EnableAutoApply Object Obj Int32 ValueCode Bool IsButtoned String Text Color ForeColor Color BackColor Bool Selected Выравнивание текста внутри ячейки Дополнительная информация или связанный с этой ячейкой объект Признак того, что данная ячейка в данный момент редактируется Ключ локализации Описание свойства для редактирования. Режим редактирования для этой ячейки не работает, если это свойство обнулено, или EnableEditing установлено в false Разрешить или запретить редактирование ячейки. Разрешить или запретить редактирование по одному щелчку. По умолчанию для редактирования ячейки необходимо дважды щелкнуть по ней. При этом, если в этот момент редактировалась какая-нибудь другая ячейка, ее редактирование завершается. Разрешить или изменение значения ячейки при изменении значения элемента редактировании При этом редактирование значения ячейки продолжается. Если установить данный флаг, то изменения в ячейке будут приняты автоматически при завершении редактирования в случае передачи фокуса другой ячейке. Внимание! Если для этой ячейки был установлен флаг EnableOnUpdateValue, то значение ячейки будет изменено, если изменялось значение в элемент редактирования. Таким образом, в этом случае, значение флага EnableAutoApply не имеет смысла. Дополнительный объект, связанный с данной ячейкой. Номер ячейки в колонке. Устанавливается программой-пользователем. Дополнительно введен в целях оптимизации распознавания ячейки в событиях изменения. Поле в режиме редактирования будет представлять собой кнопку. При этом, поведение кнопки аналогично поведению любого другого элемента редактирования. Кнопка вызывает событие OnButtonPushed. Значение ячейки в этом случае не меняется. Текст в ячейке Цвет текста в ячейке Цвет фона в ячейке Признак принадлежности ячейки к выделенной Copyright © PFSoft. 2005 www.pfsoft.com 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о сдвигом ячеек внутри диапазона Copyright © PFSoft. 2005 www.pfsoft.com Void SimpleMove(Int32 from, Int32 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 [from..to] Поменять местами ячейки в позициях from и to Добавить пакет ячеек в строку Добавить ячейку в конец строки. Вставка ячейки в строку в определенное место. Удалить ячейку с определенным индексом из строки Удалить ячейку из строки Сбросить все флаги, обозначающие выделение ячейки Получить индекс соответствующего элемента Свойство Описание Индексатор Разрешить или запретить показ стрелочек при изменении Стрелочки с каймой Разрешить раскраску в динамические цвета Цвет фона ячейки при увеличении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. Цвет фона ячейки при уменьшении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. Цвет фона ячейки, если задаваемое значение равно значению ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. Цвет текста ячейки при увеличении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. Цвет текста ячейки при уменьшении значения ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. Цвет текста ячейки, если задаваемое значение равно значению ячейки. Данное свойство имеет смысл только для чисел. Устанавливает данное свойство для всех ячеек. Цвет фона всех ячеек. Устанавливает данное свойство для всех ячеек. Свет символов всех ячеек. Устанавливает данное свойство для всех ячеек. Copyright © PFSoft. 2005 www.pfsoft.com Класс – строка PFS.GUI.Controls.PFSGrid.PFItem Название Void SetSelected(Bool selected) Название PFSubItemCollection SubItems Color BackColor Color RowBorderColor Object Tag Object Obj Color ForeColor Bool Selected Объект - строка таблицы Методы Описание Просто установить признак принадлежности к выделенным строкам. При этом, значение этого флага для всех остальных строк коллекции не изменяется. Свойства Описание Коллекция ячеек Цвет фона. При установке распространяется на все ячейки строки. Цвет обрамления Ссылка на связанный со строкой объект Дополнительный связанный объект. Если установить его, то эта ссылка будет присвоена свойству Obj для всех ячеек. (Это основное отличие от свойства Tag) Цвет текста. При установке распространяется на все ячейки строки. Флаг - строка выделена Класс – коллекция строк PFS.GUI.Controls.PFSGrid.PFItemCollection Название Void RollRight(Int32 count) Void RollRight() Void RollLeft(Int32 count) Void RollLeft() Void MoveRight(Int32 count) Void MoveLeft(Int32 count) Void ShiftMove(Int32 from, Int32 to) Void SimpleMove(Int32 from, Int32 to) Void SelectAllItems() Void AddRange(PFItem[] items) Void Add(PFItem item) Void Insert(Int32 index, PFItem item) Void Clear() Коллекция строк Методы Описание Циклический сдвиг строки вправо на count позиций Циклический сдвиг строки вправо на одну позицию Циклический сдвиг всех строк влево на count позиций Циклический сдвиг всех строк влево на одну позицию Сместить ячейку с индексом index во всех строках на одну позицию вправо Сместить ячейку с индексом index во всех строках на одну позицию влево Переместить колонку с позиции from на позицию to cо свигом ячеек внутри диапазона [from..to] Поменять местами ячейки в позициях from и to для всех строк. Выделить все ячейки Добавить пакет строк Добавить строку в конец таблицы. Рабочий метод. Добавить строку в коллекцию в место, определенное индексом nIndex Удалить все строки. Рабочий метод Copyright © PFSoft. 2005 www.pfsoft.com Удалить строку с индексом nItemIndex Удалить строку из таблицы Сбросить всем строкам таблицы флаг выделения Сбросить флаг выделения всем строкам, кроме одной, ссылка на которую передается в качестве 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 Свет символов всех ячеек. Устанавливает данное Void Remove(Int32 index) Void Remove(PFItem item) Void ClearSelection() Copyright © PFSoft. 2005 www.pfsoft.com свойство для всех ячеек. Вспомогательные типы. Общие Класс – описание вариантов для динамического свойства, описывающего стили линий. Этот класс необходим для определения содержимого выпадающего списка редактирования стиля линии. По умолчанию в динамическом свойстве устанавливается класс, описывающий стандартное перечисление DashStyle .NET Framework Предопределенные значения Описание Описание встроенных в .NET Framework стилей линий Свойство Описание Массив имен стилей линий. Стиль отображения. PFS.GUI.Controls.PFSGrid.LineStyles Название LineStyles Standard Название 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 (*.*)", "*.*"). По умолчанию ячейка выбирает все файлы. Copyright © PFSoft. 2005 www.pfsoft.com Аргументы событий редактирования Щелчок (или двойной щелчок) по ячейке PFS.GUI.Controls.PFSGrid.ClickEventArgs Название Int32 ItemIndex Int 32 ColumnIndex Событие - щелчок мыши Свойство Описание Индекс строки, по которой щелкнули Индекс столбца, по которому щелкнули Изменение ширины колонки PFS.GUI.Controls.PFSGrid.ColumnResizeEventArg Аргументы события "Изменение ширины колонки" s Свойство Название Описание Int32 ColumnIndex Номер столбца Int32 ColumnWidth Текущая ширина столбца Редактирование ячейки Аргументы для события - редактирование значения ячейки PFS.GUI.Controls.PFSGrid.CellEditEventArgs Свойства Название Описание PFSubItem SubItem Ссылка на редактируемую ячейку. Int32 CellCol Индекс выделенной колонки Int32 CellRow Индекс выделенной строки Динамическое свойство, с которым связана DynamicProperty Property ячейка 1. Если true - редактируемые значения приняты 2. Если false - отмена принятия значений. Bool Entered 3. Tercium Non Datur :)) Щелчок мышью по кнопке в ячейке PFS.GUI.Controls.PFSGrid.CellButtonArgs Название Int32 Row Int32 Col Аргументы события ButtonPushed Свойства Описание Номер строки, в которой нажата кнопка Номер столбца, в котором нажата кнопка Изменение величины в элементе редактирования без завершения режима редактирования PFS.GUI.Controls.PFSGrid.ValueChangeArgs Название PFSubItem SubItem DynamicProperty NewValue Аргументы события ValueChange Свойства Описание Ячейка, значение которой динамически редактируется Вернуть значение в формате DynamicProperty Copyright © PFSoft. 2005 www.pfsoft.com Изменение индекса или текста в выпадающем списке без завершения редактирования PFS.GUI.Controls.PFSGrid.ComboboxChangeArgs Аргументы события ComboboxValueChange Свойства Название Описание Int32 SelectedIndex Выбранный индекс выпадающего списка Object SelectedItem Выбранных объект выпадающего списка String Text Текст выпадающего списка Перетягивание колонки или строки Аргументы события перетягивания колонки или столбца 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 Базовый компаратор.На основе этого компаратора должны быть все компараторы Свойства Описание Направление сортировки Номер колонки для сортировки Copyright © PFSoft. 2005 www.pfsoft.com Библиотекой уже предопределены три компаратора: PFItemComparer PFItemNumericComparer PFItemDateComparer Компаратор сравнения строк. Значения в ячейках сравниваются как строки. Компаратор сравнения строк. Значения в ячейках сравниваются как числа Компаратор сравнения строк. Значения в ячейках сравниваются как даты Перечисления PFS.GUI.Controls.PFSGrid.ColumnStates Значение Текущее состояние колонок csNone csPressed csHot Описание Колонка в нормальном состоянии Колонка в состоянии - нажата Курсор над колонкой, но кнопки не нажаты PFS.GUI.Controls.PFSGrid.DynamicPropertyType Типы поддерживаемых динамических свойств Значение Boolean Integer DateTime Date Time Decimal String Описание Объект DynamicProperty описывает булевую величину. В ячейке отображается пиктограмма флажка. Объект DynamicProperty описывает целое со знаком. Во время редактирования в ячейке отображается числовое поле ввода. В данном случае, можно установить границы и инкремент для редактирования, с помощью свойств Minimum, Maximum и Increment. Объект DynamicProperty описывает в себе структуру DateTime. Во время редактирования ячейки отображается стандартный экранный элемент ввода даты (DateTimePicker). Объект DynamicProperty описывает в себе структуру DateTime, но в режиме редактирования экранный элемент позволяет изменять только дату. Объект DynamicProperty описывает в себе структуру типа DateTime, но во время редактирования экранный элемент позволяет редактировать только время. Объект DynamicProperty описывает вещественное число со знаком. Во время редактирования отображается числовое поле ввода. В данном случае можно установить границы, инкремент и разрядность с помощью свойств Minimum, Maximum, Increment и DecimalPlaces. Объект DynamicProperty описывает строку. В режиме редактирования в ячейке появляется Copyright © PFSoft. 2005 www.pfsoft.com LineStyle текстовое поле ввода (TextBox). Возможен вариант выбора значения строки из нескольких предопределенных. Для этого необходимо создать массив строк (string[]), который содержит в себе варианты, и передать его объекту DynamicProperty, через свойство Variants. При этом в режиме редактирования в ячейке появится выпадающий список (Combobox). Если у объекта установить свойство EnableEditVariants в true, то значение выпадающего списка можно редактировать. В противном случае выпадающий список не редактируется. Объект DynamicProperty описывает имя файла. При этом само имя файла, возвращаемое через свойство PropertyValue имеет тип string. В режиме редактирования в ячейке появляется поле ввода с кнопкой выбора имени файла, которая открывает стандартный диалог выбора имени файла. Объект DynamicProperty описывает шрифт, причем свойство PropertyValue задает и возвращает объект типа System.Windows.Forms.Font. В режиме редактирования появляется поле ввода имени шрифта, с кнопкой, открывающей стандартный диалог выбора имени шрифта. Свойство описывает Рисунок Объект DynamicProperty описывает цвет (Color). В режиме редактирования появляется выпадающий список выбора цвета. Свойство PropertyValue задает и возвращает тип Color. Объект DynamicProperty описывает толщину линии в пикселах. В режиме редактирования появляется выпадающий список выбора толщины линии. Свойство PropertyValue возвращает и задает целое (int32) - толщину линии в пикселах. Объект DynamicProperty описывает стиль линии. В режиме редактирования появляется выпадающий список выбора стиля линии. Свойство PropertyValue задает и возвращает тип DashStyle. PFS.GUI.Controls.PFSGrid.SortDirections Направление сортировки колонок FileName Font ImageIndex Color LineWidth Значение SortNothing SortAscending SortDescending Описание Неопределенное состояние сортировки Сортировка по возрастанию Сортировка по убыванию Copyright © PFSoft. 2005 www.pfsoft.com PFS.GUI.Controls.PFSGrid.ListStates Значение Состояние таблицы stateColumnResizing Описание Обычное Выбрана строка Выбрана колонка Колонка в данный момент выбирается (или изменяется ее ширина) PFS.GUI.Controls.PFSGrid.PFListRegion Область таблицы stateNone stateSelecting stateColumnSelect Значение Описание header client nonclient Область заголовка Область, занятая строками (таблица) Область вне строк таблицы PFS.GUI.Controls.PFSGrid.PFGridLines Направление линий сетки Значение Описание gridNone gridBoth gridVertical gridHorizontal Нет линий Горизонтальные и вертикальные линии Только вертикальные линии Только горизонтальные линии PFS.GUI.Controls.PFSGrid.PFGridTypes Тип сетки, можно установить сетку на всю область, занимаемую таблицей, или только на область, занимаемую ячейками Значение gridOnExists Описание Линии сетки рисуются в пределах всей таблицы Горизонтальные линии рисуются только в пределах ширины ячеек PFS.GUI.Controls.PFSGrid.PFControlStyles Стиль заголовков колонок gridNormal Значение Normal SuperFlat Описание Обычный Плоские заголовки