|
Вопрос # 1 816/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Скажите пожалуйста, как мне с помощью списка в TreeView (в зависимости от выбранного пункта) вывести определённое окно или определённые данные???
 |
Вопрос задал: ВВиталикк (статус: Посетитель)
Вопрос отправлен: 14 августа 2008, 21:44
Состояние вопроса: открыт, ответов: 3.
|
Ответ #1. Отвечает эксперт: Мережников Андрей
Здравствуйте, ВВиталикк!
При смене состояния выбора узлов в TreeView возникает событие OnChange. По параметру Node, передаваемому в обработчик события определяете какой именно узел выбран и в зависимости от этого делаете то, что Вам нужно.
например: showmessage('выбран узел '+node.text);
 |
Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 14 августа 2008, 22:13
|
Ответ #2. Отвечает эксперт: Шичко Игорь
Здравствуйте, ВВиталикк!
Второй вариант обработки события OnChange:
Каждый узел в компоненте TreeView имеет индекс, начиная с 0-го.
Таким образом можно применить конструкцию типа:
case TreeView.Items.Item.Index of
0: begin
... //операторы
end;
1:
....
end;
Для открытия окон можно использовать Form2.ShowModal;
для того чтобы основное окно не мешало работе его можно свернуть
Для этого при активизации формы Form2 написать:
procedure TForm2.FormActivate(Sender: TObject);
begin
Form1.WindowState:= wsMinimized; // окно свернуто
Form2.WindowState:= wsNormal; // окно открыто (если на полный экран - то wsMaxiMized
end;
 |
Ответ отправил: Шичко Игорь (статус: 9-ый класс)
Время отправки: 15 августа 2008, 07:51
|
Ответ #3. Отвечает эксперт: Feniks
Здравствуйте, ВВиталикк!
Держите в Приложении несколько примеров по работе с нодами (узлами) TreeView:
1. Загрузка ini-файла в TTreeView;
2. Как связать TreeView и PageControl.
P.S. Желаю удачи. Если помог, жмите +1 в репутацию.
Приложение: Переключить в обычный режим-
-
- procedure LoadIniToTree(const FName: string; Tree: TTreeView);
- var LS, LV: TStrings;
- i, j: integer;
- root: TTreeNode;
- n: string;
- p: PString;
- begin
-
-
- try
-
- try
-
-
- try
-
- begin
-
-
-
-
- begin
-
-
-
-
-
- New(p);
- p^ := LV.Values[n];
- Tree.Items.AddChildObject(root, n, p);
- end;
- end;
- finally
- LV.Free;
- end;
- finally
- LS.Free;
- end;
- finally
-
- end;
- end;
-
-
-
- procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
- begin
- if (TreeView1.Selected <> nil) and (TreeView1.Selected.Parent <> nil) then
- begin
- Edit1.Text := TreeView1.Selected.Text;
- Edit2.Text := String(TreeView1.Selected.Data^);
- end else
- begin
- Edit1.Text := '';
- Edit2.Text := '';
- end;
- end;
-
-
-
- procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
- begin
- if Node.Data <> nil then
- Dispose(PString(Node.Data));
- end;
-
-
-
-
- unit Unit1;
-
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, ComCtrls;
-
- type
- TForm1 = class(TForm)
- TreeView1: TTreeView;
- Button1: TButton;
- PageControl1: TPageControl;
- procedure Button1Click(Sender: TObject);
- procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
- procedure PageControl1Change(Sender: TObject);
- private
- procedure addItem(t: String);
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- Procedure TForm1.addItem(t:String);
- var TabSheet:TTabSheet;
- Node:TTreenode;
- begin
- TabSheet:=TTabSheet.Create(Self);
- TabSheet.PageControl:=PageControl1;
- TabSheet.caption:=t;
- Node:=TreeView1.Items.Add(nil, t);
-
-
-
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- TreeView1.HideSelection:=false;
- addItem('Item1');
- addItem('Item2');
- addItem('Item3');
- addItem('Item4');
- end;
-
- procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
- begin
-
- end;
-
- procedure TForm1.PageControl1Change(Sender: TObject);
- begin
-
- end;
-
- end.
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 15 августа 2008, 10:39
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|