Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
ВнизДети у TTreeView Найти похожие ветки
← →
anod (2002-07-29 19:08) [0]Пытаюсь перебрать детей:
for i:= 0 to TreeView1.Items.Count-1 do begin
if TreeView1.Items[i].Level=0 then begin
for j:= 0 to TreeView1.Items[i].Count-1 do begin
if TreeView1.Items[i].Item[j].Level=0 then s:=s+"<DT>"+TreeView1.Items[i].Item[j].Text+"</DT>";
if TreeView1.Items[i].Item[j].Level>0 then s:=s+"<DD>"+TreeView1.Items[i].Item[j].Text+"</DD>";
end;
end;
или
for i:= 0 to TreeView1.Items.Count-1 do begin
if TreeView1.Items[i].Level=1 then
s:=s+"<DT>"+TreeView1.Items[i].Text+"</DT>";
if TreeView1.Items[i].Level>1 then s:=s+"<DD>"+TreeView1.Items[i].Item[j].Text+"</DD>";
end;
Ничего не выходит? Почему?
← →
Skier (2002-07-29 19:28) [1]>anod
> Пытаюсь перебрать детей
Детей какого-то определённого узла ?
← →
anod (2002-07-29 19:38) [2]Нет, япервый пример работает, но не совсем,
я прохожесь по всем уззлам нахожу корневой узел, потом, просматриваю его чилдрын c Level=1, но я не могу просмотреть потомков с левел>1, мне что нужно ещё один цикл, потом ещё и т.д.
← →
anod (2002-07-29 21:21) [3]Т.е.
for i:= 0 to TreeView1.Items.Count-1 do begin
if TreeView1.Items[i].Level=0 then begin s:=s+"<h3>"+TreeView1.Items[i].Text+"</h3>";
for j:= 0 to TreeView1.Items[i].Count-1 do begin
s:=s+"<DT>"+TreeView1.Items[i].Item[j].Text+"</DT>";
for k:= 0 to TreeView1.Items[i].Item[j].Count-1 do begin
s:=s+"<DD>"+TreeView1.Items[i].Item[j].Item[k].Text+"</DD>";
{... и дальше for"ы до буквы z}
end;
end;
end;
end;
Как от этого избавитсья?
← →
quark (2002-07-29 22:08) [4]А что ты за программу пишешь?
Вообще перебираются так пишеться процедура захода в узел и перебора текущих элементов (рекурсивная)
зашел в узел взял элемент и попытался зайти в него как в узел, если получилось повтори процедуру, иначе на уровень выше.
Я так открытые в системе окна и процессы в WindowsControllere перебираю.
← →
TTCustomDelphiMaster (2002-07-29 22:46) [5]anod © (29.07.02 21:21)
Делается это с помощью рекурсии
function TreeNodeToHTMLString(Node: TTreeNode): string;
var
tag: string;
i: integer;
function GetTag(Node: TTreeNode): string;
begin
case Node.Level of
0 : Result := "h3";
1 : Result := "DT";
else Result := "DD";
end;
end;
begin
Result := "<"+GetTag(Node)+">" + Node.Text + "</"+GetTag(Node)+">";
for i:= 0 to Node.Count-1 do
Result := Result+TreeNodeToHTMLString(Node.Item[i]); // Рекурсия
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
s: string;
begin
s := "";
for i:=0 to TreeView1.Items.Count-1 do
if TreeView1.Items[i].Level = 0 then
s := s +TreeNodeToHTMLString(TreeView1.Items[i]);
Memo1.Text := s;
end;
← →
anod (2002-07-29 23:17) [6]Большое спасибо, я знаю что надо использоать рекурсию и её принципы, но никогда ей не пользовался.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c