请问Delphi中的TreeView控件的数据存贮方式是什么?如何设计一个类似的数据结构TreeView可以表示一个树的节点图,给出任意一个节点都能查找它的父节点和子节点,并且节点可以
任意增加和删除,我企图研究它的数据组织方式,但是从DFM文件中,我发现TreeView的Item属性
是一个二进制的数据结构,你能设计出一个类似的数据结构吗?

解决方案 »

  1.   

    procedure ExpandChild(
         const ANode   : TTreeNode;
         const AList   : TStrings;
         const ALevel  : string = ''
         );
     //展开子节点
     var
       i       : Integer;
     begin
       if ANode.Count = 0 then Exit;
       for i := 0 to ANode.Count - 2 do
       begin
         AList.Add(ALevel + '├' +ANode.Item[i].Text);
         ExpandChild(ANode.Item[i],AList,ALevel + '│');
       end;
       AList.Add(ALevel + '└' +ANode.Item[ANode.Count-1].Text);
       ExpandChild(ANode.Item[ANode.Count-1],AList,ALevel + ' ');
     end; procedure ExportNode(
         const ANode     : TTreeNode;
         const AFileName : string
         );
     //导出节点
     var
       aList : TStrings;
     begin
       aList :=  TStringList.Create;
       try
         aList.Add(ANode.Text);
         ExpandChild(ANode,aList);
         aList.SaveToFile(AFileName);
       finally
         aList.Free;
       end;
     end;调用:
     if dlgSave.Execute then
       ExportNode(TreeView1.Selected,dlgSave.FileName);结果示例:
    窗口查看器 - TFrmWindowView
    ├(空) - TListBox
    ├(空) - TCoolBar
    │├(空) - TToolBar
    │├(空) - TToolBar
    ││├(空) - TPanel
    │││├搜索 - TButton
    │││└(空) - TEdit
    ││└搜索文本: - TPanel
    │└(空) - TToolBar
    │ └捕获 - TPanelEx
    ├(空) - TStatusBar
    ├(空) - TTreeView
    └(空) - TListBox 
    ===================
    仅供参考!
      

  2.   

    接点里面的数据好象就是好多控件都有的属性item啊
    看看item的源代码