Компонент 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

Downloaddelphilistbox.zip - Исходные тексты (4K).