Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

3.11.7. Зеркальные классы полей ввода (edit)

В пакете Mirror Classes Kit для редактирующих контролов имеется три зеркальных компонента:

TKOLEditBox - однострочное поле ввода (создается во время исполнения конструктором NewEditBox без eoMultiline в опциях);

TKOLMemo - многострочное поле ввода неформатированного текста (NewEditBox с опцией eoMultiline);

TKOLRichEdit - многострочное или однострочное поле ввода форматированного текста (NewRichEdit).

3 .12. Список строк (list box).

Данная разновидность оконного объекта позволяет отобразить список строк, работа с которыми идет именно как со списком элементов. В частности, выделение выполняется именно поэлементно (причем, если разрешено множественное выделение, то выделены могут быть произвольные элементы-строки, не обязательно следующие подряд друг за другом. Строки в таком списке никогда не переносятся, и если они не входят по ширине в клиентскую часть окна контрола, то отображаются урезанными (если не запрещать горизонтальную прокрутку, то скроллированием возможно прочитать всю строку).

Конструктор:

NewListBox( Parent, options ) - создает объект типа TControl, как обычно, возвращая указатель на него типа PControl. В опциях можно задать особенности поведения и внешнего вида для создаваемого списка:

loNoHideScroll - не скрывать выделение, когда окно не в фокусе ввода;

loNoExtendSel - не допускать выделение произвольных элементов, даже при наличии опции loMultiSelect (например, кликом мыши с нажатым <Ctrl>);

loMultiColumn - использовать несколько колонок для отображения (для разделения колонок используется в тексте элементов символ табуляции #9);

loMultiSelect - разрешается выделение нескольких строк;

loNoIntegralHeight - при включении этой опции, допускаются любые размеры окна по высоте, а не только такие, чтобы в клиентскую часть окна могло вместиться целое число строк;

loNoSel - не разрешает выделять строки вообще;

loSort - список всегда отсортированный;

loTabstops - используются позиции табуляции для задания ширины каждой из колонок в списке с несколькими колонками;

loNoStrings - список не предназначен для хранения строк;

loNoData - виртуальный список, в котором данные не запоминаются и не изображаются самим окном, а предоставляются обработчиком события OnDrawItem. Опция loOwnerDrawFixed так же в этом случае должна присутствовать. Программист должен в своем коде обеспечить хранение и отображение элементов для виртуального списка, окно в этом случае обеспечивает только прокрутку, выбор элементов, работу с клавиатурой и прочую функциональность. Работа с виртуальными списками обычно эффективна по скорости, рекомендуется использовать этот механизм для больших списков (свыше 1000 элементов);

loOwnerDrawFixed - список отрисовывается собственным обработчиком OnDrawItem, все строки в списке имеют одинаковую высоту (при наличии события OnMeasureItem оно вызывается однократно, для установки высоты всех строк). Замечание: наличие обработчика события OnDrawItem еще не обеспечивает возможности программной отрисовки элементов списка: требуется, чтобы при создании объекта была указана опция loOwnerDrawFixed или loOwnerDrawVariable;

loOwnerDrawVariable - аналогично предыдущему, но при наличии события OnMeasureItem, оно вызывается для каждой строки, чтобы определить ее высоту.

Среди свойств, методов и событий, общих для всех визуальных объектов со списками, следует отметить только некоторые особенности для свойств:

SelStart - индекс первого выделенного элемента (может отличаться от CurIndex - текущего элемента в фокусе);

SelLength - количество выделенных элементов (в том числе в случае, когда выделенные элементы не всегда являются соседними);

OnChange - событие срабатывает при изменении набора выделенных элементов в списке. Для listbox то же самое, что OnSelChange;

OnSelChange - срабатывает при изменении выделения, как и OnChange.

LVItemHeight – данное свойство является общим для list view (общего списка) и list box (простого списка). Оно позволяет задать высоту элемента, что реализуется добавлением обработчика оконного сообщения WM_MEASUREITEM.

Имеется так же особый метод, предназначенный для использования только в списках (так же и в комбинированном списке, см. следующую главу):

AddDirList( s, attrs ) - добавляет список файлов, поддиректорий, из указанного пути (путь должен содержать и маску файлов, например, 'C:\Temp\*.txt'). Имена директорий добавляются в квадратных скобках.

В MCK для данного контрола имеется зеркало TKOLListBox. Среди прочих свойств этого компонента, следует отметить наличие свойства времени разработки Items, редактированием которого возможно подготовить список элементов, который будет добавлен сразу вслед за созданием объекта, в коде инициализации формы.