![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Путь к ветке дерева
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)