用TTreeView如何创建一棵树 ?

dgc 2001-12-02 02:57:23
用TTreeView如何创建一棵树 ?
要求:可方便在树上增加世点,取消节点。
...全文
161 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lubing317 2001-12-23
  • 打赏
  • 举报
回复
hao
dgc 2001-12-23
  • 打赏
  • 举报
回复
画树在现时的编程中使用率很高我以上的方法并不好,各位可发表各自主法,对我是很有帮助的还有同志们。
jabmoon 2001-12-09
  • 打赏
  • 举报
回复
其实这个很简单,比这个复杂得多的,根据数据库记录创建TreeView我也做过,唯一要注意的是,如果记录太多,父节点和子节点全部一次创建效率很低,最好是开始时只创建父节点,当双击父节点展开时,再创建子节点。
dgc 2001-12-09
  • 打赏
  • 举报
回复
前些天,向大家提出了此问题,因外出工作,没及时上来查阅,请谅了。
我是想按以下结构记录创建一棵树,当时我没将条件说清楚,请见谅了,但谁对用库记录创建树有更好的方法,可在此发表。
我认为以下程式,对上一些人有用,就挂上了。

库结构

parcode parname orgcode orgshortname
(父点号 父点名 子点号 子点名) --都是string
----------------------------------------------

========================================================

procedure TFormPsn.ToolButton1Click(Sender: TObject);
var
SitNod:Integer;
ParInt:Integer; //父节点编号
CurMjs:String; //子节点显示文本
PreMjs:String; //父节点显示文本
CkNode:TTreeNode;//节点位
begin
if not FormPubl.DatabaseK4HRMS.Connected then
begin
FormPubl.DatabaseK4HRMS.Connected:=True;
QueryOrg.Active:=True;//Query Active
end
else
begin
QueryOrg.Active:=True;//Query Active
end;
TreeViewOrg.Items.Clear;
if QueryOrg.Active then
begin//开始
SitNod:=0;
ParInt:=0;//初始化变量
CkNode:=nil;
PreMjs:='';
CurMjs:='';
QueryOrg.First;
while not QueryOrg.Eof do
begin
PreMjs:=QueryOrg.fieldbyName('parcode').AsString
+'---' //父节点显示文本(两字串相加)
+QueryOrg.fieldbyName('parname').AsString;
CurMjs:=QueryOrg.fieldbyName('orgcode').AsString
+'---' //子节点显示文本(两字串相加)
+QueryOrg.fieldbyName('orgshortname').AsString;
if ParInt=0 then //Root Node
begin //第一次处理root node
CkNode:=nil; // farther node
CkNode:=TreeViewOrg.items.Add(CkNode,PreMjs);//Root Node
end
else
begin//子节点处理
for SitNod:=0 to TreeViewOrg.Items.Count-1 do
begin
if TreeViewOrg.Items[SitNod].Text=PreMjs then
CkNode:=TreeViewOrg.Items[SitNod]
end;
end;
CkNode:=TreeViewOrg.items.addchild(CkNode,CurMjs);//取父节点值
Inc(ParInt);
QueryOrg.Next;
end; //Eof
end;//end 完成
end;
iammen 2001-12-02
  • 打赏
  • 举报
回复
用递归呀!
taogou 2001-12-02
  • 打赏
  • 举报
回复
先定义一个节点类的对象 TreeNode:TTreeNode
加入根节点,TreeNode:=TreeView.Add(nil,'aa');
加入它的字节点TReeNode.AddChild(TreeNode,'bb')
删除TreeView.Delete('aa');

大概是这样吧,你去看帮助,上面有比较的 详细的例子
taogou 2001-12-02
  • 打赏
  • 举报
回复
先定义一个节点类的对象 TreeNode:TTreeNode
加入根节点,TreeNode:=TreeView.Add(nil,'aa');
加入它的字节点TReeNode.AddChild(TreeNode,'bb')
删除TreeView.Delete('aa');

大概是这样吧,你去看帮助,上面有比较的 详细的例子
发帖
Delphi

5159

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2001-12-02 02:57
社区公告
暂无公告