Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 816

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Скажите пожалуйста, как мне с помощью списка в 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 в репутацию.

Приложение:
  1.  
  2.  
  3. procedure LoadIniToTree(const FName: string; Tree: TTreeView);
  4. var LS, LV: TStrings;
  5. i, j: integer;
  6. root: TTreeNode;
  7. n: string;
  8. p: PString;
  9. begin
  10.  
  11.  
  12. try
  13.  
  14. try
  15.  
  16.  
  17. try
  18.  
  19. begin
  20.  
  21.  
  22.  
  23.  
  24. begin
  25.  
  26.  
  27.  
  28.  
  29.  
  30. New(p);
  31. p^ := LV.Values[n];
  32. Tree.Items.AddChildObject(root, n, p);
  33. end;
  34. end;
  35. finally
  36. LV.Free;
  37. end;
  38. finally
  39. LS.Free;
  40. end;
  41. finally
  42.  
  43. end;
  44. end;
  45.  
  46.  
  47.  
  48. procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
  49. begin
  50. if (TreeView1.Selected <> nil) and (TreeView1.Selected.Parent <> nil) then
  51. begin
  52. Edit1.Text := TreeView1.Selected.Text;
  53. Edit2.Text := String(TreeView1.Selected.Data^);
  54. end else
  55. begin
  56. Edit1.Text := '';
  57. Edit2.Text := '';
  58. end;
  59. end;
  60.  
  61.  
  62.  
  63. procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
  64. begin
  65. if Node.Data <> nil then
  66. Dispose(PString(Node.Data));
  67. end;
  68.  
  69.  
  70.  
  71.  
  72. unit Unit1;
  73.  
  74.  
  75. interface
  76.  
  77. uses
  78. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  79. StdCtrls, ComCtrls;
  80.  
  81. type
  82. TForm1 = class(TForm)
  83. TreeView1: TTreeView;
  84. Button1: TButton;
  85. PageControl1: TPageControl;
  86. procedure Button1Click(Sender: TObject);
  87. procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
  88. procedure PageControl1Change(Sender: TObject);
  89. private
  90. procedure addItem(t: String);
  91. { Private declarations }
  92. public
  93. { Public declarations }
  94. end;
  95.  
  96. var
  97. Form1: TForm1;
  98.  
  99. implementation
  100.  
  101. {$R *.DFM}
  102.  
  103. Procedure TForm1.addItem(t:String);
  104. var TabSheet:TTabSheet;
  105. Node:TTreenode;
  106. begin
  107. TabSheet:=TTabSheet.Create(Self);
  108. TabSheet.PageControl:=PageControl1;
  109. TabSheet.caption:=t;
  110. Node:=TreeView1.Items.Add(nil, t);
  111.  
  112.  
  113.  
  114. end;
  115.  
  116. procedure TForm1.Button1Click(Sender: TObject);
  117. begin
  118. TreeView1.HideSelection:=false;
  119. addItem('Item1');
  120. addItem('Item2');
  121. addItem('Item3');
  122. addItem('Item4');
  123. end;
  124.  
  125. procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
  126. begin
  127.  
  128. end;
  129.  
  130. procedure TForm1.PageControl1Change(Sender: TObject);
  131. begin
  132.  
  133. end;
  134.  
  135. end.


Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 15 августа 2008, 10:39


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 31 марта 2023, 02:42
Выполнено за 0.02 сек.
Рейтинг@Mail.ru