3.2. Установка на зоны нужных компонент
После создания формы с несколькими зонами наносят на каждую панель компоненты и устанавливают у них свойство «Align» в значение «alClient» (выравнивание по всей области). На «Panel1» нанесем компонент «Memo1», на «Panel3» компонент-дерево «TreeView1» (вкладка «Win32»), на «Panel2» семь кнопок и компонент статусной строки «StatusBar1» (вкладка «Win32»).
Компонент-дерево «TreeView1»
содержит в свойстве «Items» набор узлов и под узлов дерева. Содержимое дерева может задаваться через Инспектор объектов (и свойство «Items»), загружаться из файла или генерироваться программно.
Компонент статусной строки «StatusBar1»
содержит «Panels» набор секций статусной строки. По-умолчанию в этом компоненте нет секций, поэтому их нужно создавать либо программно, либо через Инспектор объектов и свойство «Panels». В данном примере нужно сделать через Инспектор объектов три секции статусной строки.
3.3. Процедуры многозонной программы
private
{ Private declarations }
td: TTime; nf: string;
…
procedure TForm1.FormCreate(Sender: TObject);
{ Создание формы }
begin
Form1.Position:=poScreenCenter;
TreeView1.ReadOnly:=true; Memo1.ReadOnly:=true;
Memo1.Clear;
td:=now; nf:=ExtractFilePath(Application.ExeName)+'tree.txt';
button7.Click;
end;
procedure TForm1.Button7Click(Sender: TObject);
{ Создаем программно дерево }
var tr, tr2: TTreeNode;
begin
with TreeView1.Items do begin
Clear; memo1.Clear;
tr:=Add(nil, 'Принтеры');
AddChild(tr,'матричные');
tr2:=AddChild(tr,'струйные');
AddChild(tr2,'цветные');
AddChild(tr2,'черно-белые');
AddChild(tr2,'фото-принтер');
tr:=Add(nil, 'Мониторы');
AddChild(tr,'LCD');
AddChild(tr,'аналоговые с ЭЛТ');
TreeView1.FullExpand;
end;
end;
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
{ Обработка выбора пункта в дереве }
var k: integer;
begin
{ Проверяем, выбран ли пункт, или это раскрытие/скрытие узлов дерева }
if (htOnItem in TreeView1.GetHitTestInfoAt(X,Y)) then begin
{ Очищаем дерево }
memo1.Clear;
k:=TreeView1.Selections[0].AbsoluteIndex+1;
memo1.Lines.Add('Выбран пункт № '+inttostr(k));
memo1.Lines.Add('Содержимое пункта: '+TreeView1.Selections[0].Text);