// 트리노드의 GetNextSibling 메소드와는 좀 다름... 설명하기가 어렵네요.. -_-;
// 재귀함수로, 현재 노드의 최 하위 자식노드의 다음 노드를 구하는 함수(??? ^^)
// 그림이 있어야 하는데... ^^;
function GetNextSibling(node:TTreeNode):TTreeNode;
var
i:integer;
begin
if node<>nil then
begin
if node.Parent<>nil then
begin
if node.Parent.GetNextChild(node)<>nil then
Result:=node.Parent.GetNextChild(node)
else
Result:=GetNextSibling(node.Parent);
end
else
Result:=Node.GetNextSibling
end
else
Result:=nil;
end;
str:='';
next_node:=GetNextSibling(node);
if next_node<>nil then
begin
while true do
begin
node:=node.GetNext;
if (node=nil) or (next_node=node) then
break;
str:=str+node.Text;
end;
ShowMessage(str);
end;
hsr////////////////////////////////////////////////////////
예전에 자료실에 '트리뷰와DB를연결한간단한예제'라는 제목으로 몇가지
제가 나중에 쓰기편하게 올려 놓은게 있습니다. 참조해보세요
procedure TForm1.Button1Click(Sender: TObject);
var
DelNode, TempNode : TTreeNode;
i, j : integer;
begin
DelNode := TreeView1.Selected;
ListBox1.Clear;
ListBox1.Items.Add( DelNode.Text );
for i := 0 to TreeView1.Items.Count-1 do begin
if DelNode.Level < TreeView1.Items.Item[i].Level then begin
TempNode := TreeView1.Items.Item[i];
for j := 1 to TreeView1.Items.Item[i].Level-DelNode.Level do begin
TempNode := TempNode.Parent;
end;
if DelNode = TempNode then begin
ListBox1.Items.Add( TreeView1.Items.Item[i].Text );
end;
end;
end;
end;
for i:=0 to TreeView1.Items.Count-1 do
strText:=strText+TreeView1.Items[i].Text;
이렇게 하시면 될겁니다.