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

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

TreeView полный путь [D6, Win95/98]


electric ©   (2004-12-12 21:34:00) 

Как получить полный путь к выделенной строке? Как в проводнике это сделано. Путь изменяется динамически.


OneFragLeft   (2004-12-12 23:18:00) [1]

Тебе спасибо. Заставил старого обезьяна мозгами пошевелить=)


electric   (2004-12-12 23:08:00) [2]

> OneFragLeft ©   (12.12.04 22:49) [5]

Работает отлично! =) Благодарю! =)


Sergey_Masloff   (2004-12-12 23:05:00) [3]

electric   (12.12.04 23:00) [8]
>при условии что количество узлов заранее неизвестно
Что такое рекурсия знаешь? Если нет то google или yandex, поиск и через 1 минуту все будет понятно. В конце концов цикл с постусловием сделать - вот как минимум 2 абсолютноочевидных решения.


OneFragLeft   (2004-12-12 23:02:00) [4]

Меня сёдня все игнорят? Пойду спать:)


begin...end   (2004-12-12 23:00:00) [5]

Ну вот, уже вижу у себя ошибку. Если ничего не выбрано, то удаляется символ из пустой строки. :-(Пойду спать...


electric   (2004-12-12 23:00:00) [6]

> begin...end ©   (12.12.04 22:24) [2]

К примеру в проводнике структура каталогов :
-C
+Programm Files
-Windows
 -Temp
-Games
 -Balls

При нажатии на папку Balls в поле адреса появится путь к этой папке C:\Games\Balls. Как это же сделать в TreeView при условии что количество узлов заранее неизвестно?


begin...end   (2004-12-12 22:50:00) [7]

> [4] electric   (12.12.04 22:47)

Что-то вроде этого:

var
 Path: String;
 Node: TTreeNode;
begin
 Path := '';
 Node := TreeView.Selected;
 while Assigned(Node) do
 begin
   Path := '\' + Node.Text + Path;
   Node := Node.Parent
 end;
 Delete(Path, 1, 1)
end.


P.S. Написал прямо здесь, в Delphi не проверял, заранее прошу прощения за возможные ошибки.


OneFragLeft   (2004-12-12 22:49:00) [8]

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
label1.Caption:='';
while not(Node.Parent=nil) do
begin
 label1.Caption:=Node.Text+'\'+label1.Caption;
 node:=node.Parent;
end;
 label1.Caption:=Node.Text+':\'+label1.Caption;

end;


так? Не судите строго.


electric   (2004-12-12 22:47:00) [9]

>Sergey_Masloff   (12.12.04 22:25) [3]

Ведь неизвестно сколько раз придётся писать Parent чтобы добраться до самого корня! Как это можно сделать для динамического количества узлов?


Sergey_Masloff   (2004-12-12 22:25:00) [10]

В TreeView путь? Подняться к корню последовательно. У TTreeNode естьсвойство Parent


begin...end   (2004-12-12 22:24:00) [11]

Не понял вопроса. Поподробнее, пожалуйста.


electric   (2004-12-12 22:19:00) [12]

Полный адресс. например C:\Games\Balls\Balls.exe


Наверх

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