| 
| 
 | Вопрос # 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);beginif Node.Data <> nil then   Dispose(PString(Node.Data));end;    unit Unit1;  interface usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ComCtrls; typeTForm1 = 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; varForm1: TForm1; implementation {$R *.DFM} Procedure TForm1.addItem(t:String);var TabSheet:TTabSheet;     Node:TTreenode;beginTabSheet:=TTabSheet.Create(Self);TabSheet.PageControl:=PageControl1;TabSheet.caption:=t;Node:=TreeView1.Items.Add(nil, t);   end; procedure TForm1.Button1Click(Sender: TObject);beginTreeView1.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
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |