下面是我写的一个TREEVIEW小程序的代码,你可以看,
var rootnode,subnode,personnode,matenode:ttreenode;
i,j,k:integer;
begin
rootnode:=tv1.items.add(nil,'公司');
qrymaster.Close;
qrymaster.sql.add('select * from master');
qrymaster.Open;
qrymaster.First;
for i:=0 to qrymaster.RecordCount-1 do
begin
subnode:=tv1.Items.Addchild(rootnode,qrymaster.FieldByName('company').AsString);
//原形:rootnode=tv1.items.add(nil,string);
// rootnode.ImageIndex :=0;
// rootnode.stateIndex =0;
qrysub.Close;
qrysub.SQL.clear;
qrysub.SQL.Add('select * from submaster where companyid=:dd');
qrysub.ParamByName('dd').asinteger:=qrymaster.FieldByName('companyid').asinteger;
qrysub.Open;
qrysub.First;
for j:=0 to qrysub.RecordCount-1 do
begin
personnode:=tv1.Items.AddChild(subnode,qrysub.FieldByName('personname').AsString);
// subnode.ImageIndex :=-1;
// subnode.StateIndex :=-1;
qrymate.close;
qrymate.sql.clear;
qrymate.sql.add('select * from comunication where personid=:personid');
qrymate.parambyname('personid').asinteger:=qrysub.fieldbyname('personid').asinteger;
qrymate.open; for k:=0 to qrymate.recordcount-1 do
begin
matenode:=tv1.items.addchild(personnode,qrymate.fieldbyname('name').asstring);
qrymate.next;
end;
qrysub.Next;
end; qrymaster.Next;
end;
end;
var rootnode,subnode,personnode,matenode:ttreenode;
i,j,k:integer;
begin
rootnode:=tv1.items.add(nil,'公司');
qrymaster.Close;
qrymaster.sql.add('select * from master');
qrymaster.Open;
qrymaster.First;
for i:=0 to qrymaster.RecordCount-1 do
begin
subnode:=tv1.Items.Addchild(rootnode,qrymaster.FieldByName('company').AsString);
//原形:rootnode=tv1.items.add(nil,string);
// rootnode.ImageIndex :=0;
// rootnode.stateIndex =0;
qrysub.Close;
qrysub.SQL.clear;
qrysub.SQL.Add('select * from submaster where companyid=:dd');
qrysub.ParamByName('dd').asinteger:=qrymaster.FieldByName('companyid').asinteger;
qrysub.Open;
qrysub.First;
for j:=0 to qrysub.RecordCount-1 do
begin
personnode:=tv1.Items.AddChild(subnode,qrysub.FieldByName('personname').AsString);
// subnode.ImageIndex :=-1;
// subnode.StateIndex :=-1;
qrymate.close;
qrymate.sql.clear;
qrymate.sql.add('select * from comunication where personid=:personid');
qrymate.parambyname('personid').asinteger:=qrysub.fieldbyname('personid').asinteger;
qrymate.open; for k:=0 to qrymate.recordcount-1 do
begin
matenode:=tv1.items.addchild(personnode,qrymate.fieldbyname('name').asstring);
qrymate.next;
end;
qrysub.Next;
end; qrymaster.Next;
end;
end;
解决方案 »
- 既可以是RECORD 又同时是ARRAY
- 求速度快的位图转pdf的代码,我自己写了一个太慢,兄弟们帮帮忙。
- 怎样LoadFromFile带{}的文本文件?
- 怎样向一个动态连接库里面传送一个数据集???
- 为什么我的程序在别的机器上不能运行
- 求Delphi6的升级程序SP3 下载后立刻结贴!!还有斑竹我的专家分怎么自己减了200多分啊!
- 这个好难啊 怎么编程啊
- (三层)Access查询中WHERE子句中如何指定“按位与”运算
- 关于访问数据表问题
- 请教高手,如何在三层结构下,获知客户端与Application Sever端以及Application Sever与数据库服务器端
- Delphi与游戏的讨论,快来参加!
- SMTP
公司
-companyname
-公司人员名
-公司人员的通讯录
如:
公司
-用友公司
-王晨
-李明
-王亮
-张东
-李海
-明明
-刚风