Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.07;
Скачать: CL | DM;

Вниз

Компонент TreeView   Найти похожие ветки 

 
Егоров А.Н.   (2007-07-26 15:53) [0]

Есть TreeView1 с тремя уровнями и Label1:

- Товары
  + Приход
  + Расход
- .....
  + .....
  + .....
- Справочники
  + Товаров
  + .....
  - Территориальные справочники
     - Страны
     - Города
     - .....
- .....
  + .....
  + .....

Подскажите, как при выборе, например, узла "Страны" получить:
Label1.Caption = "Справочники  - Территориальные справочники - Города".


 
Сергей М. ©   (2007-07-26 16:01) [1]

Пройтись в цикле до корня, попутно считывая подписи проходимых узлов и формируя список строк. Сформировать результирующую строку в цикле по всем элементам полученного списка.


 
Сергей М. ©   (2007-07-26 16:10) [2]

ДЛя 3-хуровневого дерева можно обойтись и без списка, формируя результ.строку прямо по ходу цикла к корню.

Случай со списком более универсален в плане производительности алгоритма в целом при работе с деревом без явного ограничения уровеня вложенности


 
Егоров А.Н.   (2007-07-27 08:29) [3]

Нашел решение в справке по Delphi (DRKB3_Full.chm):

// Получение пути заголовков к выбранному узлу в RzTreeView1
function GetPathToNode(Node: TTreeNode): string;
begin
Result := "";
if Node = nil then
 exit;
while Node <> nil do begin
 Result := Node.Text + "\" + Result;
 Node := Node.Parent;
end;
Delete(Result, length(Result), 1);
end;

Все работает в лучшем виде!
// Выбор пунктов ДРЕВОВИДНОГО МЕНЮ
procedure TForm_MainTree.RzTreeView1Change(Sender: TObject;
 Node: TTreeNode);
begin
// Запись пути заголовков к выбранному узлу RzTreeView1 в Label1
 Label1.Caption:=GetPathToNode(RzTreeView1.Selected);

 ....
 ....
 ....

end;



Страницы: 1 вся ветка

Текущий архив: 2007.10.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
1-1185448950
AndreyRU
2007-07-26 15:22
2007.10.07
Блокировка мышиных сообщений! TPopupMenu..


2-1189505083
юра
2007-09-11 14:04
2007.10.07
сжатие данных


1-1185306496
Dr. Andrew
2007-07-24 23:48
2007.10.07
[Warning] Crc32.pas(140): Variable InFile might not have been!


15-1189185382
delphiForever
2007-09-07 21:16
2007.10.07
просьба не ржать...


1-1185652576
click
2007-07-28 23:56
2007.10.07
плавный скроллинг TScrollBox