트리뷰에 캡션을 집어 넣기 위해서는
TreeView1.Items.add( ParrentNode, '캡션') 이렇게 하면 되고
트리뷰에 Object를 집어 넣기 위해서는
TreeView1.Items.AddObject( ParrentNode, '캡션', iMyObject) ; 이렇게 하면 됩니다.
현재 선택된 노드의 캡션을 읽어 오려면
var
iTreeNode: TTreeNode;
begin
if TreeView1.Selected <> nil then begin
iTreeNode := TreeView1.Selected;
Edit1.Text := iTreeNode.Text;
end;
end;
또는 객체의 데이터를 읽어 오려면
var
iTreeNode: TTreeNode;
begin
if TreeView1.Selected <> nil then begin
iTreeNode := TreeView1.Selected;
Edit1.Text := TMyObject(iTreeNode.Data).addr;
end;
end;
하면 됩니다.
그러나 트리뷰에서 가장 중요한 것은 특정 캡션의 자료를 찾는 것입니다.
재귀적 검색 방법에 의해서 찾아 보겠습니다.
function TForm3.GetNodeByCaption(ACurrNode: TTreeNode; const ACaption: string): TtreeNode;
var
jTreeNode: TTreeNode;
begin
Result:= nil;
jTreeNode:= ACurrNode;
while jTreeNode <> nil do begin
// edit2.Text:= jTreeNode.Text; 디버깅용
if CompareText(ACaption, jTreeNode.Text) = 0 then begin
Result:= jTreeNode;
exit;
end else begin
jTreeNode:= jTreeNode.getFirstChild;
while jTreeNode <> nil do begin
Result:= GetNodebyCaption(jTreeNode, ACaption);
if Result <> nil then exit;
jTreeNode:= jTreeNode.GetNextChild(jTreeNode);
end;
end;
end;
end;
function TForm3.GetTVNodeByCaption(iTreeView: TTreeView; const ACaption: string): TTreeNode;
var
iTreeNode : TTreeNode;
begin
Result:= nil;
iTreeNode:= iTreeView.Items.GetFirstNode;
while iTreeNode <> nil do begin
Result:= GetNodeByCaption(iTreeNode, ACaption);
if Result <> nil then exit;
iTreeNode:= iTreeNode.getNextSibling;
end;
end;
를 먼저 선언 해놓고
procedure TForm3.Button3Click(Sender: TObject);
var
iTreeNode: TTreeNode;
begin
iTreeNode:= GetTVNodeByCaption(TreeView1, Edit1.Text);
if iTreeNode <> nil then begin
iTreeNode.Selected:= True;
edit2.Text:= iTreeNode.Text;
end;
end;
하면 됩니다.
댓글 없음:
댓글 쓰기