treeview树逐级展开的代码?

kittydolphin 2005-12-28 02:45:21
请问谁可以共享一下 treeview逐级展开的代码给我看看?谢谢了。
...全文
264 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huaflying 2006-01-09
  • 打赏
  • 举报
回复
改成

type
RecUnit=^TRecUnit;
TRecUnit=record
unitID:string;
unitName:string;
end;

kittydolphin 2005-12-29
  • 打赏
  • 举报
回复
出现下面的错误,还是不行啊?

type
TRecUnit=record
unitID:string;
unitName:string;
end;

procedure TGBRMSQZCT.BizFormCreate(Sender: TObject);
///////////////////////////////////////////////////////////////
// 功能描述:
// 显示单位编码树和人员名单,其中单位树只显示跟节点和第一层子节点
// 输入:
// 输出:
// 编写人:
// 编写时间:
//////////////////////////////////////////////////////////////
var
rootUnit:string;
myUnit:Trecunit;
begin

rootUnit:=''; //保存跟节点的单位编码值
with datasetbroker1 do
begin
dataset.Active := true; //打开数据集
while not (dataset.eof) do
begin
if DataSet.FieldByName('parent1').AsString ='-1' then
//根节点
begin
node1:=treeunit.Items.Add (nil,dataset.fieldbyname('name').AsString );
//rootUnit:=dataset.fieldbyname('unitid').asstring;
new(Trecunit);
Trecunit^.Unitid:=rootunit; // ERROR:Unexpected token: Trecunit
Trecunit^.unitname:=dataset.fieldbyname('name').asstring;// ERROR:Unexpected token: Trecunit
node1.data:=^Trecunit;// ERROR:Unexpected token: Trecunit


dataset.Next;
end
else
begin

if dataset.FieldByName('parent').AsString=rootUnit then
begin
//第一层子节点
treeUnit.Items.AddChild (node1,dataset.fieldbyname('name').asstring);
dataset.next;
end
else
dataset.Next ;

end;
end;
end;
end;
huaflying 2005-12-29
  • 打赏
  • 举报
回复

type

PRec = ^TRec;
TRec = record
ID: string; //工程编号
Name: string; //工程名称
C_id: string; //合同编号
C_Name: string; //合同名称
Flag: ShortInt; //1 工程节点;0合同节点;
////////////////////////////lah 2004-06-28
Money_dec: ShortInt; // 金额小数位数
op_flow: string; // 程序业务流程
Gq: Integer; // 工期
GqName: string;
GqBegDate: TDateTime; //当前工期开始时间
GqEndDate: TDateTime; // 工期结束时间
IsPayment: Boolean; // 是否支付
Js_xx: string; //结算信息
Flag_w: boolean; //千分位标志
{ TODO : sun 05-04-13 }
C_Bdmc: string; //标段名称
end;


var
ptr: Prec;
NewNode: TTreeNode;
begin
TreeView.Items.Clear;
new(ptr);
ptr^.ID := htbh;
Ptr^.Name := htName;
Ptr^.Flag := 2;
NewNode := TreeView.Items.AddObject(nil, Ptr^.Name, ptr);
NewNode.ImageIndex := 3;
NewNode.SelectedIndex := 3;
xyx14 2005-12-28
  • 打赏
  • 举报
回复
以前处理过这个问题的.
把地区用TreeView显示出来.有3000多个..
要是开始时全创建至少要5秒.
所以只能当点中其中某个节点展开时再创建子节点.
不知楼主是否要实现这样的功能?
在刚开始创建时要判断一下.该节点下面是否要放子节点.把+号显示出来
还有.在展开时要判断一下其下面是否已经有子节点了.再次展开时会重复的创建.

smiler007 2005-12-28
  • 打赏
  • 举报
回复
用指针就是了。。。、、
AddChildObject()
sxdoujg 2005-12-28
  • 打赏
  • 举报
回复
procedure TFrm_main.TreeView1Click(Sender: TObject);
var
i:integer;
begin
i:=0;
if TreeView1.Selected.Level=0 then
with Frm_DM.Q_tree2 do
begin
Frm_DM.Q_tree2.Close;
Frm_DM.Q_tree2.Sql.Clear;
Frm_DM.Q_tree2.SQL.Add('select * from h_code_tree where sysname=:sysname');
Frm_DM.Q_tree2.SQL.Add(' and id in(select id from h_limit where menu=''1'' and flag=:flag)');
Frm_DM.Q_tree2.ParamByName('sysname').AsString:=TreeView1.Selected.Text;
Frm_DM.Q_tree2.ParamByName('flag').AsString:=Frm_login.p_userflag;
Frm_DM.Q_tree2.Open;
ListView1.Clear;
end;
if TreeView1.Selected.Level=1 then
with Frm_DM.Q_tree2 do
begin
Frm_DM.Q_tree2.Close;
Frm_DM.Q_tree2.Sql.Clear;
Frm_DM.Q_tree2.SQL.Add('select * from h_code_tree where menuname=:menuname');
Frm_DM.Q_tree2.SQL.Add(' and id in(select id from h_limit where menu=''1'' and flag=:flag)');
Frm_DM.Q_tree2.ParamByName('menuname').AsString:=TreeView1.Selected.Text;
Frm_DM.Q_tree2.ParamByName('flag').AsString:=Frm_login.p_userflag;
Frm_DM.Q_tree2.Open;
ListView1.Clear;
end;
while not Frm_DM.Q_tree2.Eof do
begin
list1:=ListView1.Items.Add;
list1.ImageIndex:=i;
list1.Caption:=Frm_DM.Q_tree2.FieldByName('meno').AsString;
Frm_DM.Q_tree2.Next;
inc(i);
end;
end;
kittydolphin 2005-12-28
  • 打赏
  • 举报
回复
在vb中,treeview的每个节点都有自己的唯一标志,可以存在key里面。Delphi的treeview怎么没有这个属性?data属性是干什么的?
huaflying 2005-12-28
  • 打赏
  • 举报
回复

procedure TfrmDDraw030000.tvSubTreeExpanding(Sender: TObject;
Node: TTreeNode; var AllowExpansion: Boolean);
begin
//加节点代码
end;
kittydolphin 2005-12-28
  • 打赏
  • 举报
回复
不是。每次只展开下一级节点,不是一次都吧所有节点加入。这样节省时间。
另外,在vb中,treeview的每个节点都有自己的唯一标志,可以存在key里面。Delphi的treeview怎么没有这个属性?
阿三 2005-12-28
  • 打赏
  • 举报
回复
treeview逐级展开,没清楚你要实现的是什么。
是要动画式的一级级打开吗?

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧