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

Вниз

TreeView низший уровень   Найти похожие ветки 

 
Ghost. ©   (2002-10-14 16:54) [0]

Как определить все последние значения веток относящихся к каждому уровню например
1111111
ццццццц
йййййй
222222
вввввввв
жжжжжжжж
к
1111111 последними будут ццццццц и йййййй,
к 222222- жжжжжжжж но и к вввввввв последним будет жжжжжжжж


 
MBo ©   (2002-10-14 17:00) [1]

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
MaxLevel: Integer;
procedure Walk(node:TTreenode);
var
i: Integer;
begin
for i := 0 to node.Count - 1 do begin
if MaxLevel < node.Item[i].level then
MaxLevel:= node.Item[i].level;
walk(node.Item[i]);
end;
end;

begin
MaxLevel := node.Level;
walk(node);
Caption := Inttostr(MaxLevel);
end;


 
Ghost. ©   (2002-10-14 17:25) [2]

Мысль понятна но мне нето надо..поробую из этого сделать сам


 
MBo ©   (2002-10-15 10:06) [3]

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
MaxLevel: Integer;
MaxData:String;
procedure Walk(node:TTreenode);
var
i: Integer;
begin
for i:=0 to node.Count-1 do begin
//находит ПЕРВЫЙ из самых глубоких элементов.
//если надо последний, замени < на <=
if MaxLevel< node.Item[i].level then begin
MaxLevel:=node.Item[i].level;
MaxData:=node.item[i].Text;
end;

walk(node.Item[i]);
end;
end;

begin
MaxLevel:= node.Level;
MaxData:=node.Text;
walk(node);
Caption:= Inttostr(MaxLevel)+ " "+MaxData;
end;


 
MBo ©   (2002-10-15 10:28) [4]


procedure TForm1.Button1Click(Sender: TObject);
var
Node:TTreeNode;
MaxLevel: Integer;
MaxText:String;
procedure Walk(node:TTreenode);
var
i: Integer;
begin
for i:=0 to node.Count-1 do begin
if MaxLevel<= {или <} node.Item[i].level then begin
MaxLevel:=node.Item[i].level;
MaxText:=node.item[i].Text;
end;
walk(node.item[i]);
end;
end;
begin
Node:=TreeView1.Items.GetFirstNode;
while Node<>nil do begin
MaxLevel:=0;
MaxText:=node.Text;
walk(node);
Memo1.Lines.Add(MaxText);
Node:=Node.GetNextSibling;
end;
end;


 
Ghost. ©   (2002-10-15 11:27) [5]

procedure TForm1.Button1Click(Sender: TObject);
var
Node, lChild:TTreeNode;
begin
Node:=DATreeView1.Items.GetFirstNode;
while node<>nil do
begin
//:=Node.text;
///////////////////////////////////////////////////////////////////////
lChild:=Node.getFirstChild;
repeat
if lChild<>nil then
begin
if lChild.Count=0 then ListBox2.Items.Add(lChild.Text);
end;
lChild:=Node.GetNextChild(lChild);
until lChild = nil;
////////////////////////////////////////////////////////////////////
Node:=Node.GetNextSibling;
end;
end;

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


 
Milz ©   (2002-10-15 11:46) [6]

Сорри, могут быть ошибки в синтаксисе и не только ;).


procedure NodeList(Node:TTreeNode)
var
lChild:TTreeNode;
begin

if node.Count>0 then begin
lChild:=Node.getFirstChild;
repeat
if lChild<>nil then
begin
NodeList(lChild);
end;
lChild:=Node.GetNextChild(lChild);
until lChild = nil;
end else begin
ListBox2.Items.Add(Node.Text);
end;

end;


procedure TForm1.ListCalc;
begin
NodeList(DATreeView1.Items.GetFirstNode);
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
4-78733
SasaR
2002-09-12 15:54
2002.10.24
Создание ДЛЛ с контролами


7-78692
abcjoeexyz
2002-08-16 16:02
2002.10.24
DeviceIOControl


1-78481
bobby
2002-10-13 11:57
2002.10.24
указатель


6-78571
кондратий
2002-08-23 18:19
2002.10.24
POST ...


3-78268
Bishop
2002-10-02 17:36
2002.10.24
TpFibDataSet