Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по программированию » .NET - Все статьи »

Обсудить на форуме Обсудить на форуме

Скачать полное описание
Скачать библиотеку компонента с примером

Компонент PFSGrid представляет аналог стандартного компонента ListBox, но обладающего несравненно большими возможностями.  В частности, предусмотрена динамическая раскраска ячеек в зависимости от значений, редактирование содержимого ячеек, изменение положения строк и столбцов путем «перетаскивания» их на другое место и многое другое. На основе компоненты можно создавать удобные окна настройки параметров, информационные панели, редакторы таблиц и пр. Каждая ячейка способна хранить не только данные, но и описание этих данных, благодаря чему в режиме редактирования отображаются соответствующие экранные элементы.

Возможности:

  • Редактирование значений в ячейке
  • Широкий спектр поддерживаемых типов данных в ячейке с автоматическим выбором элемента редактирования в зависимости от типа данных в ячейке.
  • Индивидуальная настройка каждой ячейки (редактирование, отображения)
  • Изменение мышью ширины столбцов
  • Перестановка мышью (Drag-and-drop) строк и столбцов
  • Быстрая сортировка по любому столбцу.
  • Возможность объявления любого компаратора для сортировки + три предопределенных компаратора
  • Различные стили линий, отображение только горизонтальных, вертикальных или полной сетки.
  • Отделенный уровень представления от внутренней логики, что позволяет использовать одну таблицу на разных панелях.
  • Динамическое изменение цветов фона, текста, отображение соответствующих пиктограмм (стрелочки вверх/вниз) при изменении числовых  величин.
  • Встроенное меню видимости колонок.
  • Черезстрочная подсветка, выделение строки, подсветка строки и столбца под курсором мыши и многое другое…

Общее описание таблицы.

Общий вид таблицы показан на рис. 1

Рис. 1. Общий вид таблицы.

Редактирование значений.

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

Редактирование строковых величин.

Во время редактирования строковых значений (типа DynamicPropertyType.String) в ячейке появляется поле ввода текста (см. рис. 2.)

Рис 2. Поле ввода текста

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

Рис.3. Выпадающий список.

Редактирование чисел

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

Рис. 4. Поле ввода числовых величин. Редактируется вещественное число.

При этом изменение величины возможно с помощью пиктограмм со стрелками, а также колесиком прокрутки мыши. Приращение величины при изменении ее с помощью стрелок и колесика мыши определяется свойством Increment объекта DynamicProperty.

Редактирование булевых величин

Если ячейка описывает булевый тип, то в ней появляется пиктограмма «флажка» (рис. 5.) Для редактирования значения экранный элемент не используется, просто изменяется состояние пиктограммы в зависимости от значения ячейки.

Рис. 5 . Булевая величина в ячейке.

Редактирование стилей линий

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

Рис.6. Редактирование стиля линии.

Редактирование цветов

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

Рис. 7. Редактирование цвета.

Редактирование толщины линий

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

Рис. 8. Список выбора толщины линии.

Редактирование рисунков

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

Рис.9. Список выбора рисунка.

Редактирование имени файла

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

Рис. 10. Выбор имени файла.

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

Редактирование имени шрифта

Если ячейка описывает шрифт, то в режиме редактирования появляется метка выбора шрифта.

Рис. 11. Выбор шрифта.

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

Редактирование даты и времени.

Если ячейка описывает дату, или время, то в режиме редактирования появляется элемент выбора даты или времени:

Рис. 12. Выбор даты или времени.

Режим кнопки

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

Рис. 13. Режим кнопки.

Изменение видимости колонок

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

Рис. 14. Изменение видимости колонок.

Изменение ширины столбцов и сортировка

Ширина колонки изменяется с помощью мыши. Для этого нужно установить курсор на границу колонок, нажать левую кнопку и не отпуская ее, растянуть или сжать колонку. Курсор мыши при попадании на границу колонок меняет свой внешний вид.

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

Перетягивание колонок и столбцов.

Для перетягивания строки или столбца необходимо щелкнуть по заголовку колонки или строке левой кнопкой мыши и «перетащить» ее на новое место, не отпуская кнопки. При этом место вставки строки или столбца будет отмечаться черным обрамлением (см. рис)

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

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

Перетягивание колонки разрешено только если установить свойство ColumnDragEnable в true. Перетягивание строк возможно только при установке свойтсва RowDragEnable в true.


Может пригодится:


Автор: Denis Borisovsky
Прочитано: 3061
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (1)

Прислал: гость
разве это место для рекламмы своих продуктов?

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру