Материал: Мансуров. Основы программирования в среде Lazarus. 2010

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

Рис. 6.73. Редактор компонента TImageList

Нажмите кнопку "Добавить…". Откроется стандартное диалоговое окно открытия файла изображения. Я выбрал два понравившихся мне рисунка из папки, где установлен Lazarus. Каждое изображение имеет свой индекс, по ко-

торому осуществляется доступ к нему. Индексы начинаются с нуля. Основные свойства компонента TImageList – высота Height и ширина Width. Эти свойства позволяют задать размер изображения. По умолчанию размер изобра-

жения 16х16 пикселей.

Чтобы связать компонент TImageList с TTreeView выделите компо-

нент TTreeView, выберите в инспекторе объектов свойство Images и в выпа-

дающем списке укажите нужный компонент, например ImageList1. Или про-

граммно запишите оператор

TreeView1.Images:= ImageList1;

Свойство ImageIndex позволяет указать индекс изображения в

646

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

TImageList, которое будет появляться рядом с текущим узлом. Свойство

SelectedIndex позволяет указать индекс изображения в

TImageList, которое будет появляться рядом с текущим узлом при его выбо-

ре (выделении). И, наконец, свойство StateIndex позволяет добавить до-

полнительную пиктограмму, которое будет появляться рядом с текущим узлом.

Изображения, соответствующие StateIndex хранятся в другом компоненте

TImageList, а связь осуществляется через свойство StateImages. Так что,

если вы собираетесь использовать дополнительные пиктограммы, вы должны поместить на форму второй компонент TImageList и заполнить его соот-

ветствующими изображениями. По умолчанию значения всех индексов равны

-1, рис. 6.72. Это означает, что пиктограммы отсутствуют.

Рассмотрим некоторые другие свойства компонента TTreeView:

Images: TImageList – содержит набор изображений, которые будут ис-

пользоваться при прорисовке узлов;

Indent: integer – определяет отступ в пикселях от левого угла узла для всех его подузлов;

Items: TTreeNodes – содержит список всех узлов. Доступ к любому уз-

лу осуществляется по индексу. Индексация начинается с нуля;

ReadOnly: boolean – запрещает/разрешает редактирование текста над-

писей узлов;

RightClickSelect: boolean – разрешает выбор узлов правой кнопкой мыши;

Selected: TTreeNode – содержит список всех выбранных узлов. Если ничего не выбрано, то равно nil;

SelectionCount: Cardinal – количество выбранных узлов;

Selections[Index: integer]: TTreeNode – доступ к выбранным узлам по индексу;

RowSelect: boolean – разрешает выделение цветом линий выбранных

647

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

узлов. Игнорируется, если ShowLines равен false;

ShowButtons: boolean – разрешает/запрещает показ стандартных кно-

пок раскрытия подузлов. По умолчанию true. Если false, узел раскрывается двойным щелчком мыши;

ExpandSignType – определяет вид значка раскрытия узла. Может прини-

мать значения tvestPlusMinus - значок в виде плюса/минуса, tvestArrow – значок в виде стрелки, tvestTheme – вид значка определяется систем-

ными настройками.

ShowLines: boolean – разрешает/запрещает показ линий;

ShowRoot: boolean – разрешает/запрещает показ линий, идущих от са-

мого верхнего уровня иерархии. Игнорируется, если ShowLines = false;

SortType: TSortType – указывает способ сортировки узлов: stNone

нет сортировки, stData – сортировка по связанным с узлами данными объек-

тов, stText – сортировка по тексту надписей, stBoth – сортировка по тексту и по данным;

Topitem: TTreeNode – определяет корневой узел.

Методы компонента:

procedure FullCollapse – сворачивает все узлы, кроме узлов самого верхнего уровня;

procedure FullExpand – раскрывает все узлы;

function IsEditing: boolean – возвращает true, если пользователь редактирует какой-либо узел;

procedure LoadFromFile(const FileName: string) – загружает данные в компонент из файла;

procedure SaveToFile(const FileName: string) – сохраняет в файле содержимое компонента;

Рассмотрим события, связанные с TTreeView:

648

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

OnChange – возникает при изменении состояния выбора узла, например при выделении одного из узлов или при отмене выделения;

OnExpanding – возникает перед раскрытием узла. В обработчик события

OnExpanding передается параметр var AllowExpansion: boolean, ко-

торый можно задать равным false, если вы хотите запретить раскрытие этого узла;

OnExpanded – возникает после раскрытия узла;

OnCollapsing – возникает перед сворачиванием узла. В обработчик

OnCollapsing передается параметр var AllowCollapse: boolean,

разрешающий или запрещающий сворачивание узла;

OnCollapsed – возникает после сворачивания узла;

OnCompare – возникает при сравнении двух узлов Node1 и Node2. В па-

раметре Compare обработчик должен вернуть отрицательное число, если

Node1<Node2, ноль, если Node1=Node2 и положительное число, если

Node1>Node2;

OnDeletion – возникает при удалении узла;

OnEdited –возникает при завершении редактирования текста надписи в уз-

ле. В обработчик передаются узел Node и S – новая надпись.

Для работы с узлами Items предусмотрен специальный класс

TTreeNodes. Рассмотрим некоторые свойства и методы этого класса.

Count – количество узлов в Items;

Item[Index: integer] – узел с индексом Index;

Методы класса TTreeNodes:

function Add(Node: TTreeNode; const S: String): TTreeNode – добавляет узел в конец того списка, в котором зарегистрирован узел

Node. Если Node = nil, добавляется корневой узел для всего компонента;

function AddChild(Node: TTreeNode; const S: string):

649

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

TTreeNode – добавляет узел в конец списка item дочерних узлов узла Node;

function AddChildFirst(Node: TTreeNode;

const S: String): TTreeNode – до-

бавляет узел в начало списка Item дочерних узлов узла Node;

function AddFirst(Node: TTreeNode;

const S: String): TTreeNode – добавляет узел в начало того списка, в котором зарегистрирован узел Node;

procedure BeginUpdate – блокирует обновление экрана до тех пор, по-

ка не будет выполнен метод EndUpdate. Используется при большом количе-

стве операций по удалению и вставке узлов, поскольку при этом может возник-

нуть мерцание экрана;

procedure Clear – очищает список всех узлов и подузлов компонента;

procedure Delete(Node: TTreeNode) – удаляет узел Node;

procedure EndUpdate – отменяет блокировку обновления экрана мето-

дом BeginUpdate;

function GetFirstNode: TTreeNode – возвращает самый первый узел в списке Items[0];

function GetNode(Itemid: HTreeItem): TTreeNode – возвраща-

ет узел по его идентификатору Itemid;

function Insert(Node: TTreeNode;

const S: string): TTreeNode – вставляет узел непосредственно перед узлом Node;

Для работы непосредственно с узлом в классе TTreeNode имеет свой на-

бор методов, свойств и событий:

AbsoluteIndex: integer – возвращает абсолютный индекс узла

(с учетом всех подузлов);

Count: integer – содержит количество подузлов в списке Item;

650

Смотрите также:

11 Горм +
113
14
1433
1511
1632
199
204
2N4264RE
3773