Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Путь к ветке дерева


harismatik ©   (2002-12-18 19:20:00) 

У меня есть дерево папок. Как, выбрав одну из них, получить полный путь к ней и вывести этот путь как Label.caption?


Polevi   (2002-12-19 10:27:00) [1]

procedure GetPath(Node:TTreeNode;var s:string)
begin
s:=s+Node.Text;
if Assigned(Node.Parent) then GetPath(Node.Parent,s);
end;

GetPath(TV.Selected,s);
ShowMessage(s);


Skier   (2002-12-19 09:57:00) [2]

>harismatik
А зачем искать узел с признаком Selected ???
Его можно получить сразу...
TTreeView.Selected - вернёт тебе указатель на объект TTreeNode,
т.е. указатель на узел, который выбран в данный момент времени...
Ежели TTreeView.Selected = nil, то - нет выбранного узла.

А что касается индекса узла, то посмотри св-ва
TTreeNode.Index и TTreeNode.AbsoluteIndex


harismatik   (2002-12-18 19:51:00) [3]

2 Skier- ты меня правильно понял. И в принципе, я это сделал в цикле. Только остался один вопрос: как при выборе папки определить ее индекс{то бишь индекс Items} (что-то не хочется перебирать все папки в цикле, пока не будет найдена та, которая имеет признак Selected) Может есть какой другой способ? И какой ивент компонента TreeView лучше для этого использовать (я использую OnClick)?


Danlicha   (2002-12-18 19:35:00) [4]

Не лучше


dona   (2002-12-18 19:28:00) [5]


Используйте компонент OpenDialog (страница Dialogs).
Например,
if OpenDialog1.Execute then Label1.Caption:=OpenDialog1.FileName;


Skier   (2002-12-18 19:28:00) [6]

>harismatik

Если я правильно понял
то тебе понадобятся св-ва

- TTreeView.Selected
- TTreeNode.Parent
- TTreeNode.Text

движешься от выбранного узла дерева (TTreeView.Selected)
вверх по иерархии папок (TTreeNode.Parent) и суммируешь путь
(TTreeNode.Text) в конце получить полный путь..

Ну а вообще-то лучше запоминать полный путь к узлу
при построении дерева папок. (здесь : TTreeNode.Data)


Наверх

Титульная страница Поиск, карта сайта Написать письмо