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

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

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

____________________________________________________________________

Cut: boolean – помечает узел статусом "вырезанный";

Expanded: boolean – равен true, если узел раскрыт;

Focused: boolean – равен true, если на узле установлен фокус;

HasChildren: boolean true, если узел имеет дочерние узлы;

ImageIndex: TImageIndex – равен индексу связанной с узлом пикто-

граммы;

Index: Longint – содержит индекс узла в списке дочерних узлов его ро-

дительского узла;

IsVisible: boolean – равен true, если узел виден;

Level: integer – содержит иерархический уровень узла;

Owner: TTreeNodes – содержит ссылку на владельца данного узла;

Parent: TTreeNode – содержит ссылку на родительский узел;

Selected: boolean – равен true, если узел выделен;

SelectedIndex: integer – номер пиктограммы для выделенного узла;

Text: Strings – содержит текст узла;

function AlphaSort: boolean - сортирует узлы по алфавиту свойств Text и возвращает true в случае успеха;

procedure Collapse(Recurse: boolean) – закрывает все узлы

(Recurse = true) или только раскрытые (Recurse = false);

procedure Delete - удаляет текущий узел;

procedure DeleteChildren – удаляет дочерние узлы;

function EditText: boolean – переводит текст узла в режим редак-

тирования;

procedure EndEdit(Cancel: boolean) – заканчивает редактиро-

вание текста и сохраняет изменения, если Cancel= false;

procedure Expand(Recurse: boolean) – открывает узел (и все по-

дузлы, если Recurse= true);

651

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

____________________________________________________________________

function GetFirstChild: TTreeNode – возвращает ссылку на пер-

вый подузел или nil, если нет подузлов;

function GetLastChild: TTreeNode - возвращает ссылку на по-

следний подузел или nil, если нет подузлов;

function GetNext: TTreeNode – возвращает ссылку на очередной

подузел;

function HasAsParent(Value: TTreeNode): boolean – возвра-

щает true, если Value – родительский узел;

function IndexOf(Value: TTreeNode): integer – возвращает индекс узла Value.

Давайте теперь завершим процесс ввода в TReeView1 структуру типич-

ного университета, рис. 6.74.

Рис. 6.74. Пример ввода элементов с помощью редактора TTreeView

Поместите на форму компонент TStatusBar и напишите следующие об-

работчики:

652

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

____________________________________________________________________

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);

begin

if Node.Selected then

StatusBar1.SimpleText:= 'Выбран узел: ' + Node.Text; end;

procedure TForm1.FormCreate(Sender: TObject); begin

TreeView1.Images:= ImageList1;

TreeView1.ExpandSignType:= tvestPlusMinus;

end;

Вобработчике OnCreate формы мы связали изображения, содержащиеся

вImageList1 с TreeView1, а также указали вид кнопки раскрытия узла. В

обработчик OnChange передается узел Node, состояние которого изменилось

(например, при щелчке пользователя на узел, он будет выделен). Узнать, выде-

лен (выбран) узел или нет, можно по свойству Selected. Текст этого узла со-

держится в свойстве Text.

Теперь создадим это же дерево программным путем. Кроме вывода в

TStatusBar информации о выбранном пользователем узле, выполним какие-

то еще действия. Например, выведем список групп студентов при нажатии узла

"Группы". Создайте новый проект, поместите на форму компоненты

TTreeView, TComboBox, TListBox, TStatusBar, TImageList и три компонента TLabel, так как показано на рисунке 6.75.

Поначалу компоненты TComboBox, TListBox и два TLabel будут неви-

димы. Только при выборе узла " Группы " мы сделаем их видимыми, а при вы-

боре другого узла, снова сделаем их невидимыми.

Подготовьте три текстовых файла со списками студентов или возьмите файлы из примера, где мы рассматривали компонент TComboBox.

653

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

____________________________________________________________________

Рис. 6.75. Форма приложения

unit Unit1; interface uses

Classes, SysUtils, FileUtil, LResources, Forms,

Controls, Graphics, Dialogs, ComCtrls, StdCtrls;

type

TForm1 = class(TForm)

ComboBox1: TComboBox;

ImageList1: TImageList;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

ListBox1: TListBox;

StatusBar1: TStatusBar;

TreeView1: TTreeView;

procedure ComboBox1KeyPress(Sender: TObject; var Key: char);

654

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

____________________________________________________________________

procedure ComboBox1Select(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TreeView1Change(Sender: TObject;

Node: TTreeNode); procedure LoadListGroup(namefile: string);

private

{private declarations } public

{public declarations } end;

var

Form1: TForm1; implementation { TForm1 }

procedure TForm1.FormCreate(Sender: TObject); var

i: integer; begin

with TreeView1 do begin

Images:= ImageList1;

ExpandSignType:= tvestPlusMinus;

Items.Clear;

Items.Add(nil, 'Ректор');

Items.AddChild(Items.Item[0],

'Проректор по учебной работе');

Items.AddChild(Items.Item[1], 'Учебная часть');

Items.AddChild(Items.Item[1], 'Факультеты');

Items.AddChild(Items.Item[3], 'Кафедры');

655

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

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