begin
treeview1.items.add(nil,'公司');
treeview1.items.add(treeview1.items[0],'公关');
treeview1.items.add(treeview1.items[0],'财务');
treeview1.items.add(treeview1.items[0].item[0],'张三');
treeview1.items.add(treeview1.items[0].item[0],'李四');
end;
treeview1.items.add(nil,'公司');
treeview1.items.add(treeview1.items[0],'公关');
treeview1.items.add(treeview1.items[0],'财务');
treeview1.items.add(treeview1.items[0].item[0],'张三');
treeview1.items.add(treeview1.items[0].item[0],'李四');
end;
解决方案 »
- Checklistbox 能不能通过选项的值 得出它的itemindex啊??
- 冬至,散分
- 如何获取flash文件的信息? 影片时长,原始尺寸,帧数等信息
- 怎样更改其groupbox的边框颜色?
- 大家进来看看,我写了一个简单的带一个参数的存储过程,现在要用ADOStoredProc调用这个过程
- 我的这个代码为什么在运行完后报错!
- 我有一个接口函数,如何在我的exe中使用呢?
- 我想做一个数据库:可以让用户自己建表,定义字段类型等属性,该怎么着手!?
- 怎么让这3个winsock同时工作??
- DELPHI中设置了一个自增字段,有点问题,很着急,请各位看看。(50分奉送)
- 请问看李维的四本书有顺序吗?
- teechart 的问题
首先加入控件“TreeView1”
建树过程:
var
dd:TTreeNode;
begin
dd:=TreeView1.Items.AddChild(nil,'公司');//建树根
dd:=TreeView1.Items.AddChild(dd,'部门');//在刚建树根上再建树枝
dd:=TreeView1.Items.AddChild(dd,'小组');//在刚建树枝上再建树枝
TreeView1.Items.AddChild(dd,'职员');//在刚建树枝上再建树叶
end;
首先加入控件“TreeView1”
建树过程:
var
dd:TTreeNode;
begin
dd:=TreeView1.Items.AddChild(nil,'公司');//建树根
dd:=TreeView1.Items.AddChild(dd,'部门');//在刚建树根上再建树枝
dd:=TreeView1.Items.AddChild(dd,'小组');//在刚建树枝上再建树枝
TreeView1.Items.AddChild(dd,'职员');//在刚建树枝上再建树叶
end;
先做一个文本文件,格式如下:
A00
B01
C01
D01
D02
D03
C02
D11
D12
B02
....说明:前面的空格数量作为层数,注意不要多了或少了!
然后导进树中去,很方便的,哈哈!
构建结构树:
表结构:(tree_name,tree_code,tparent_code)//根节点
procedure tfrm_tree_union.build_tree;
begin
//查找根节点
// frm_onland.run_animate(frm_tree_union,animate1);
query1.active:=false;
query1.SQL.Clear;
query1.SQL.Add('select * from gh_tree_union where parent_code=''0''');
try
query1.ExecSQL;
except
frm_onland.close_animate(frm_tree_union,animate1);
messagedlg('读取根节点出错!',mterror,[mbok],0);
exit;
end;
query1.Active:=true;
if query1.RecordCount=0 then
begin
frm_onland.close_animate(frm_tree_union,animate1);
messagedlg('没有根节点,请先建立根节点!',mterror,[mbok],0);
exit;
end;
treeview1.Items.Clear;
//建立根节点
with treeview1.Items do
begin
v_treenode:=add(nil,query1.fieldbyname('tree_name').AsString);
has_child:=true;
// 下级子节点
build_treenode(v_treenode,query1.fieldbyname('tree_code').AsString);
//图片显示是否有子节点
end;
//全部子节点:
build_leaf;
end;
//一级子节点
procedure tfrm_tree_union.build_treenode(tree_node:ttreenode;parentcode:string);
var
i:integer;
tree_name:string;
begin
//frm_onland.run_animate(frm_tree_union,animate1);
animate1.Visible:=true;
animate1.Active:=true;
query2.Active:=false ;
query2.SQL.Clear;
query2.SQL.Add('select * from gh_tree_union where parent_code='''+parentcode+'''');
try
query2.ExecSQL;
except
//frm_onland.close_animate(frm_tree_union,animate1);
messagedlg('构建子节点出错!',mterror,[mbok],0);
exit;
end;
query2.Active:=true;
if query2.RecordCount=0 then
begin
// frm_onland.close_animate(frm_tree_union,animate1);
// messagedlg('此节点下无子节点!',mtinformation,[mbok],0);
exit;
end
else
begin
for i:=0 to query2.RecordCount-1 do
begin
tree_name:=query2.fieldbyname('tree_name').AsString;
treeview1.Items.AddChild(tree_node,tree_name);
query2.Next;
end;
end;
animate1.Active:=false;
animate1.Visible:=false;
//frm_onland.close_animate(frm_tree_union,animate1);
end;
//全部子节点
//建立其它子节点
//其构建顺序为:根据一级节点数,从上向下依次建立!
procedure tfrm_tree_union.build_leaf;
var
i,j,k,m:integer;
str:string;
begin
k:=0;
//计算一级子单位数.
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select m=count(*) from gh_tree_union where parent_code=''00000''');
try
query1.Open;
except
messagedlg('检索一级子节点出错!',mterror,[mbok],0);
exit;
end;
m:=query1.fieldbyname('m').AsInteger;
//构建树!
//如m<5,则取默认值5
if m<5 then
m:=5;
for j:=0 to m do //此处J并不表示树的层数,而表示一级子节点数!
begin
animate1.Visible:=true;
animate1.Active:=true; for i:=k to treeview1.Items.Count-1 do
begin
//frm_onland.run_animate(frm_tree_union,animate1);
v_treenode:=treeview1.Items[i];
if v_treenode.HasChildren then
begin
continue;
end;
str:=v_treenode.Text;
query1.Active:=false;
query1.SQL.Clear;
query1.SQL.Add('select tree_code from gh_tree_union where tree_name='''+str+'''');
try
query1.ExecSQL;
except
// frm_onland.close_animate(frm_tree_union,animate1);
messagedlg('检索代码出错!',mterror,[mbok],0);
exit;
end;
query1.Active:=true;
if query1.RecordCount=0 then
begin
// frm_onland.close_animate(frm_tree_union,animate1);
messagedlg('此单位代码不存在!',mterror,[mbok],0);
exit;
end;
str:=query1.fieldbyname('tree_code').AsString;
build_treenode(v_treenode,str);
k:=i;
label5.Caption:=inttostr(k);
end;
animate1.Active:=false;
animate1.Visible:=false;
end;
end;