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

Вниз

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

 
Lony ©   (2003-06-27 11:44) [0]

Есть в файле txt или ini такой список:

c:\mydirectory\1\
c:\mydirectory\1\12\
c:\mydirectory\1\12\13\
c:\mydirectory\2\
c:\mydirectory\2\21\
и так далее.


Можно ли всё это получить в компоненте TreeView в причёсанном виде?


 
Юрий Федоров ©   (2003-06-27 11:47) [1]

Однозначно можно


 
Digitman ©   (2003-06-27 11:51) [2]

эта ф-ция делает львиную долю работы :

function ParsePath(const Path: String): TStringList;
var
i,j,k: Integer;
begin
Result:= TStringList.Create;
try
j:= Length(Path);
i:=1;
k:=1;
while i<=j do begin
if IsPathDelimiter(Path, i) then begin
Result.Add(Copy(Path,k,i-k));
k:= Succ(i);
end;
Inc(i);
end;
if (Result.Count > 0) or (i > k) then
Result.Add(Copy(Path,k,i-k));
except
Result.Free;
raise;
end;
end;


 
Юрий Федоров ©   (2003-06-27 12:05) [3]

>>Digitman
А не проще
TStringList.Delimiter
TStringList.DelimitedText


 
Digitman ©   (2003-06-27 12:14) [4]

может и проще)
но в Д5 , кажись, нет таких свойств


 
Lony ©   (2003-06-27 13:11) [5]

>>Digitman
Что делает эта функция?

>>Юрий Федоров
Как это использовать в TreeView? Ведь добавлять надо по пунктам, подпунктам.


 
Bel ©   (2003-06-27 13:15) [6]

> Digitman © (27.06.03 11:51)

А так ещё проще:

StringList.Text := StringReplace(Path, "\", #13#10, [rfReplaceAll]);


 
Юрий Федоров ©   (2003-06-27 13:15) [7]

>>Lony © (27.06.03 13:11)
Эта функция создает список строк TStringList на основе строки с путем.
В списке все папки будут разделены и идти по порядку.
Например для строки c:\mydirectory\1\ получим список из трех элементов:
c:
mydirectory
1

А дальше нужно писать руками


 
Digitman ©   (2003-06-27 13:17) [8]


> Lony


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

имея готовый список ты в цикле проходишь от начала до конца по его элементам, выбирая очередной элемент и создавая в своем TreeView соотв. узел с соотв. именем


 
Digitman ©   (2003-06-27 13:20) [9]


> Bel


это проще только по написанию и восприятию.
Но сложнее по заметно большему кол-ву внутренних (технологических) перераспределений памяти.


 
Lony ©   (2003-06-28 02:12) [10]

Никого нет примера, как работать с TTreeView?


 
kaif ©   (2003-06-28 02:21) [11]

Чтобы добавить корневой пункт в TreeView нужно использовать
TreeView.Items.Add(nil, s);
Чтобы добавить дочерний пункт в пункт Node нужно
TreeView.Items.AddChild(Node, s);
Подробнее в Help.


 
Lony ©   (2003-06-28 10:24) [12]

Да, но что надо вставить вместо Node? И как добавить в дочернее?


 
sunwheel ©   (2003-06-28 12:08) [13]


procedure Test;
Var node : TTreeNode;
I : Integer;
S : String;
begin
TreeView1.Items.BeginUpdate;
try
TreeView1.Items.Clear;
S := "Child ";
node := TreeView1.Items.AddChild(nil,"Root");
For I:=0 to 9 do node := TreeView1.Items.AddChild(node,S+IntToStr(I));
finally
TreeView1.Items.EndUpdate;
end;
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
3-31079
Карелин Артем
2003-06-16 11:30
2003.07.10
Замедление работы компа после вставки большого числа записей.


4-31576
-= Demon =-
2003-05-07 16:16
2003.07.10
CreateProcess


1-31203
Dream
2003-06-28 12:43
2003.07.10
проблемы с memo ( смешно конечно но я по моему уже гоню )


1-31190
Lex
2003-06-28 11:18
2003.07.10
Как отключить клавишу


7-31537
Fotog
2003-04-27 18:33
2003.07.10
Дозвон