如果数型结构有8层级,那么最好用什么方法把它展开
解决方案 »
- Delphi7中两个小问题(给出我所有的分:10分)
- 第一次花100分来提问,求一个智能的copy文件的解决方案.
- 石家庄急招delphi程序员
- 如何将SQL数据导出到BDF 不用BATCHMOVE 那个太慢了 最后有原码 谢谢各位了~
- 如何在TreeView节点中加两个图标?(其中一个是通过ImageList添加的)
- 请问rasWinGod 这个控件如何用!(在线等待)
- 我发现一个QuickReport控件的重大BUG?!
- 关于Object Pascal
- 用NMUDP通讯,最大一次能传递多少字节内容啊?
- delphi的ADOQuery1中变量的使用问题
- 30分﹐请教 delphi开发的两个小问题..有兴趣的请进来……
- 咨询关于DELPHI进行WEB SERVICE客户端编程的问题
1 ..... 0
2 ..... 1
3 ..... 1
.....这样用递归写代码很容易的,且层数可以任意增加。如:
Pbmdata = ^TbmData;
TbmData = record
id :integer;
name :string;
parent_dm :integer;
if_end :boolean;
End;//写根节点
new(mybm);
mybm.id:=q.fieldbyname('id').AsInteger;
mybm.name:=q.fieldbyname('name').AsString;
// mybm.cs:=q.fieldbyname('cs').AsInteger;
mybm.if_end:=q.FieldByName('if_end').AsBoolean;
mybm.parent_dm:=q.fieldbyname('parent_dm').AsInteger;
//写户籍树
insert_tv(tv_1.Items.AddChildFirst(nil,mybm.name),mybm.id);
procedure Tmainform.insert_tv(toptree:Ttreenode;id:integer);
// 从父节点开始递归写数据
var
midtree:ttreenode;
mybm :pbmdata;
q1,q2:tadoquery;
begin
q1:=tadoquery.Create(self);
q1.Connection:=dmform.ADOConnection1;
q2:=tadoquery.Create(self);
q2.Connection:=dmform.ADOConnection1;
q1.SQL.Add('select * from aa where parent_dm='+inttostr(id));
q1.Prepared;
q1.Open;
if q1.Eof then exit;
while not q1.Eof do
begin
new(mybm);
mybm.id:=q1.fieldbyname('id').AsInteger;
mybm.name:=trim(q1.fieldbyname('name').AsString);
// mybm.cs:=q1.fieldbyname('cs').AsInteger;
mybm.if_end:=q.FieldByName('if_end').AsBoolean;
mybm.parent_dm:=q1.fieldbyname('parent_dm').AsInteger;
midtree:=tv_1.Items.AddChildObject(toptree,mybm.name,mybm);
q2.SQL.Clear;
q2.SQL.Add('select * from aa where parent_dm='+inttostr(mybm.id));
q2.Prepared;
q2.Open;
if not q2.Eof then insert_tv(midtree,mybm.id);
q2.Close;
q1.Next;
end;
q1.Destroy;
q2.Destroy;
end; 发要详细代码,与QQ:549711582联系