Компонент GsvListBox
Последнее обновление: 22 июля 2006
Этот визуальный компонент можно рассматривать как специфическую оптимизацию стандартного списка для случая произвольного, сколь угодно большого числа элементов и пользовательской отрисовки элементов. В принципе, эту же задачу решает стандартный компонент ListBox с установленным стилем lbOwnerDrawFixed. Компонент TGsvListBox наследуется от TCustomControl и не имеет никаких контейнеров для хранения элементов. Это удобно для модели "Документ-Вид", так что элементы списка хранятся только в документе. Наличие пользовательской отрисовки позволяет отображать в элементе не только текст. Стандартный компонент TListView часто является нежелательным, учитывая то, что размер исполняемого файла увеличивается почти на 100 кб и крайне неудобно изменять вертикальный размер элемента списка при смене шрифта.
Дополнительно к стандартным свойствам компонента TCustomControl компонент TGsvListBox определяет следующие свойства:
- BorderStyle: TBorderStyle
- Стиль рамки.
- HideSelection: Boolean
- Это свойство присутствует в компоненте TListView, но отсутствует в TListBox. В некоторых случаях оно оказывается крайне важным. При потере фокуса выделенный элемент продолжает оставаться выделенным, но цвет выделения становится более светлым, так как это делается в TListView.
- MinItemHeight: Integer
- Минимальная высота элемента. Реальная высота элемента определяется по размеру шрифта, но MinItemHeight служит для ограничения этого размера снизу, чтобы учесть отрисовку каких-либо иных фрагментов элемента, например, графического изображения.
- OnDrawItem
- Это событие используется для отрисовки элемента. Метод-обработчика принимает следующие аргументы:
Sender: TObject; aCanvas: TCanvas; const aItemRect: TRect; aItemIndex: Integer.
- OnChangeSelection
- Обработчик этого события вызывается, когда изменяется текущий элемент списка.
- procedure SetItemIndexCentered(aItemIndex: Integer);
- Эта public-процедура делает видимым элемент с указанным индексом и, если возможно, располагает его в центре клиентской области компонента.
- function HitTest(Y: Integer): Integer;
- Эта public-функция возвращает индекс элемента по координате Y клиентской области или -1, если координата Y указывает на пространство после последнего элемента.
- Count: Integer
- Это public-свойство позволяет получить или установить число элементов в списке.
- ItemIndex: Integer
- Это public-свойство позволяет получить или установить индекс текущего элемента списка.
- TopIndex: Integer
- Это public-свойство позволяет получить или установить индекс первого видимого элемента списка.
- VisibleCount: Integer
- Это public-свойство позволяет получить число видимых элементов списка.
Download
delphilistbox.zip - Исходные тексты (4K).