Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Справочник по компонентам Delphi.doc
Скачиваний:
148
Добавлен:
02.05.2014
Размер:
1 Mб
Скачать

Компонент tHeader

TObject—>TPersistent—>TComponent—”TControl—”-TWinControl—”

—>TCustoinControl—”THeader

Модуль EXTCTRLS

Страница Палитры компонентов Additional

Этот компонент представляет собой заголовок, например, ддя таблицы, т. е. совокупность расположенных горизонтально полей (секций) с текстом, ширина которых может изменяться.

Заголовок разделен на столько секций (столбцов), сколько строк имеется в свойстве:

(Pb) property Sections: TStrings;

Каждая строка отображается в своей секции. Если свойство:

(Pb) property AllowResize: Boolean;

установлено в True, то ширина каждой секции может быть изменена во время работы при помощи передвижения разделительной линии мышью. При этом значение ширины для секции Х соответствует элементу массива:

(Pb) property SectionWidth[X: Integer]: Integer;

С изменением ширины секции связано два события. При каждом перемещении мыши во время изменения возникает событие:

(Pb) property OnSizing: TSeccionEvent;

TSectionEvent = procedure(Sender: TObject; ASection, AWidth:

Integer) of object;

Оно означает, что произошло изменение ширины секции ASection и ее новая ширина равна AWidth. Об окончании изменения программист извещается при помощи события:

(Pb) property OnSized: TSectionEvent;

Стиль обрамления компонента обусловлен свойством:

(Pb) property BorderStyle: TBorderStyle;

Ввод и выбор значений

Общим доя описанных в этом разделе компонентов является то, что с их по­мощью можно интерактивно выбрать или установить значения каких-то вели­чин, которые доступны через их свойства и могут в нужный момент быть счи­таны. Для выбора эти компоненты предоставляют пользователю различные упро­щающие приемы, поэтому "чистые" редакторы не рассматриваются в этой группе.

Компонент tListBox

TObject—>TPer si stent—”TComponent—>TControl—>TWinControl—>

—>TCustomListBox—>TListBox

Модуль STDCTRLS

Страница Палитры компонентов Standard

Этот компонент соответствует списку выбора — стандартному элементу уп­равления Windows. С его помощью пользователь может выбрать одну из строк, которые хранятся в свойстве:

(Pb) property Items: TStrings;

В списке Items. Strings хранится текст строк, а список Items.Objects пользователь может использовать для хранения связанных с ними объектов, например, картинок для нестандартно изображаемого списка.

Индекс текущего (сфокусированного) элемента списка содержится в свойстве:

property Itemlndex: Integer;

Не путайте сфокусированный элемент (стандартно он помещается в рамку из точек) и выделенный (цветным фоном), они могут не совпадать. Смысл этих понятий будет объяснен ниже. Значение индекса Itemlndex лежит в диапазоне от 0 до Items.Count-1. Он доступен для чтения и записи.

Индекс первого видимого элемента в списке представлен свойством:

property Toplndex: Integer;

Он будет ненулевым в том случае, когда все элементы не помещаются в окне списка, и была сделана прокрутка.

Список выбора имеет свою канву:

(Ro) property Canvas: TCanvas;

и на его поверхности можно рисовать.

Когда в списке нужно предусмотреть выделение одновременно более одного элемента, оперируйте свойствами:

(Pb) property MultiSelect: Boolean;

(Pb) property ExtendedSelect: Boolean;

Если MultiSelect установлено в False, то в списке одновременно не может быть выделено несколько элементов и значение ExtendedSelect не играет роли. В противном случае дело обстоит так. При ExtendedSelect = False каждый раз изменяется состояние только сфокусированного элемента. Каждый щелчок мышью или нажатие пробела меняет его состояние выделения на противопо­ложное. Если ExtendedSelect = True, то выбор происходит при передвижении мыши с нажатой левой кнопкой, каждом щелчке мышью на новом элементе списка при нажатых <Ctri> или <Shift>, или при нажатии <Shift>+<t/4->.

Количество выделенных элементов можно узнать из свойства:

(Ro) property SelCount: Integer;

Проверку и установку выделения для каждого элемента можно провести, используя свойство:

property Selected[Index: Integer]: Boolean;

При задании ошибочного индекса при доступе к списку возникает исключитель­ная ситуация EList Error.

Чтобы расположить строки в алфавитном порядке, нужно установить в True свойство:

(Pb) property Sorted: Boolean;

Элементы списка могут появляться как в одном столбце — Друг под другом, так и в нескольких соседних. В этом случае список может иметь горизонталь­ную полосу прокрутки. Число столбцов определяется свойством:

(Pb) property Columns: Integer;

Если столбец один, то значение этого свойства равно 0. Очистить список можно при помощи метода:

procedure Clear;

Стиль обрамления компонента определяется свойством:

(Pb) property BorderStyle: TBorderStyle;

Найти индекс элемента, которьш содержит точку Pos, можно при помощи метода:

function ItemAtPos(Pos: TPoint; Existing: Boolean): Integer;

Параметр Existing определяет, что возвращается в случае неудачи (значение Items.Count либо -1).

Прямоугольник, отведенньш элементу списка с индексом Index, определяется с помощью метода:

function ItemRect(Index: Integer): TRect;

При создании и визуализации списка система обычно подгоняет его высоту таким образом, чтобы в видимое поле помещалось целое число элементов. Это соответствует значению True свойства:

(Pb) property IntegralHeight: Boolean;

Если IntegralHeight равно False, то высота списка не изменяется. Это свойство не играет роли при стиле списка IbOwnerDrawVariable.

Стиль списка может быть стандартным или определенным пользователем через свойство:

(Pi-y property Style;

TListBoxStyle = (IbStandard, IbOwnerDrawFixed,

IbOwnerDrawVariable) ;

Рассмотрим назначение этого свойства более подробно.

В стандартном варианте (IbStandard) в списке отображаются только строки из свойства Items; в двух других случаях рисуемые пользователем списки могут иметь фиксированную (IbOwnerDrawFixed) или переменную (IbOwnerDrawVariable) высоту элемента. В первом случае нужно задать свойство:

(Pb) property ItemHeight: Integer;

Для стиля IbOwnerDrawVariable высота каждого элемента определяется прог­раммистом, которьш должен предусмотреть обработку события:

(Pb) property OnMeasureItem: TMeasureItemEvent;

TMeasureItemEvent = procedure(ListBox: TListBox; Index:

Integer; var Height: Integer) of object;

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

Для рисования каждого элемента инициируется событие:

(Pb) property OnDrawItem: TDrawItemEvent;

TDrawItemEVent = procedure(ListBox: TListBox; Index: Integer;

Rect: TRect; State: TOwnerDrawState) of object;

Обработчик этого события получает указатель на список ListBox, индекс эле­мента Index, отведенньш для рисования прямоугольник Rect, и состояние эле­мента в параметре State:

TOwnerDrawState = set of (odSelected, odGrayed, odDisabled,

odChecked, odFocused) ;

Для списка выбора из этого множества действительны только флаги odSelected, odDisabled, odFocused.

Соседние файлы в папке Delphi