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

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

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

____________________________________________________________________

Items.AddChild(Items.Item[4], 'Преподаватели'); Items.AddChild(Items.Item[3], 'Студенты'); Items.AddChild(Items.Item[6], 'Группы'); Items.AddChild(Items.Item[0], 'Проректор по науке');

Items.AddChild(Items.Item[8],

'Институт прикладных исследований'); Items.AddChild(Items.Item[8], 'Отдел аспирантуры'); Items.AddChild(Items.Item[0], 'Проректор по экономике'); Items.AddChild(Items.Item[11], 'Отдел внешних связей'); Items.AddChild(Items.Item[0], 'Проректор по АХЧ');

for i:= 0 to Items.Count - 1 do begin

Items.Item[i].ImageIndex:= 0;

Items.Item[i].SelectedIndex:= 1;

end;

FullExpand;

end;

Label1.Caption:= 'Выберите группу';

Label2.Caption:= '';

Label3.Caption:= 'Структура университета';

Label1.Visible:= false;

Label2.Visible:= false;

ComboBox1.Visible:= false;

ListBox1.Visible:= false;

end;

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

begin

StatusBar1.SimpleText:= 'Выбран: ' + Node.Text;

656

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

____________________________________________________________________

if Node.AbsoluteIndex = 7 then begin

Label1.Visible:= true;

ComboBox1.Visible:= true;

ComboBox1.SetFocus;

ComboBox1.ItemIndex:= 0;

end else begin

Label1.Visible:= false;

Label2.Visible:= false;

ComboBox1.Visible:= false;

ListBox1.Visible:= false;

end;

end;

procedure TForm1.ComboBox1Select(Sender: TObject); begin

with ComboBox1 do begin

Label2.Visible:= true;

Label2.Caption:='Список группы ' + Text;

ListBox1.Visible:= true;

case ItemIndex of

0:LoadListGroup('List1.txt');

1:LoadListGroup('List2.txt');

2:LoadListGroup('List3.txt'); else

ShowMessage('Группа не выбрана');

end;

657

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

____________________________________________________________________

end;

end;

procedure TForm1.LoadListGroup(namefile: string); var

tfile: TStringList; str: string;

begin

tfile:= TStringList.Create; tfile.LoadFromFile(namefile); str:= tfile.Text;

{$IFDEF WINDOWS}

str:= SysToUTF8(str); // преобразование в кодировку UTF-8

{$ENDIF}

with ListBox1 do begin

Items.Text:= str; end;

tfile.Free; ListBox1.Sorted:= true;

end;

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

begin

if Key = #13 then begin

ComboBox1Select(Sender);

Key:=#0;

end;

end;

658

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

____________________________________________________________________

initialization

{$I unit1.lrs}

end.

Обратите внимание узлы, находящиеся на первом уровне, имеют одинако-

вые индексы. Например, у всех проректоров Items.Item[0]. Поскольку на-

ше дерево фиксировано, добавление новых узлов и подузлов в программе не предусмотрено и, следовательно, индекс узла "Группы" нам известен, для опре-

деления выбора узла "Группы" мы воспользовались свойством

AbsoluteIndex:

if Node.AbsoluteIndex = 7 then

Но можно было поступить и по-другому:

if Node.Text = 'Группы' then

Компонент TTreeView можно применить для отображения дерева папок дисков, например как в левом окне Проводника Windows. Попробуем и мы реа-

лизовать эту задачу. Скажу сразу, в панели компонентов во вкладке "Misc"

имеется специализированный компонент TShellTreeView предназначенный именно для этого. Но мы попытаемся сделать это сами, так сказать "ручками",

ведь "не боги горшки обжигают"!

Сначала нам необходимо познакомиться с некоторыми функциями, кото-

рые будут нам нужны для работы.

659

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

____________________________________________________________________

Функции поиска файлов

Для поиска файлов обычно применяются следующие функции:

FindFirst - определяется следующим образом:

function FindFirst (Const Path: String; Attr: Longint; out Rslt : TSearchRec): Longint;

Параметр Path – задает путь к каталогу, а также маску поиска файлов.

Маска может содержать символы – шаблоны:

? любой одиночный символ;

* - сколько угодно символов или даже отсутствие символов.

Например, маска *.* означает любые файлы с любым расширением, а мас-

ка *.pas означает любые файлы, с расширением pas.

Параметр Attr – атрибуты файла. Определяет, какие типы файлов следует

искать. Может принимать следующие значения:

faReadOnly – файлы только для чтения;

faHidden – скрытые файлы;

faSysFile – системные файлы;

faDirectory – папки и каталоги;

faArchive – архивные файлы; faAnyFile – любые файлы.

Можно применять любые их комбинации, например, для поиска скрытых и

системных файлов можно задать faHidden + faSysFile.

Переменная Rslt представляет собой тип данных запись

TSearchRec, определяется следующим образом (привожу только те поля, ко-

торые представляют для нас интерес):

660

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

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