数据库中的记录如下:
id Type Name
1 aaa 12121
2 bbb asdasd
3 ccc fdsfsdf
4 bbb 2342
5 aaa dfffaf
6 ccc ffesfsf
实现下面效果:
+ 类型汇总
¦
+ -----aaa
¦ ¦____12121
¦ ¦____dfffaf
+ -----bbb
¦ ¦____asdasd
¦ ¦____2342
+ -----ccc
¦____fdsfsdf
¦_____ffesfsf
我用的是 Query1 控键,根节点下的附节点可以找出来,可以附节点下的子节点找不出来,请教各位高手!谢谢! (例子也行)
id Type Name
1 aaa 12121
2 bbb asdasd
3 ccc fdsfsdf
4 bbb 2342
5 aaa dfffaf
6 ccc ffesfsf
实现下面效果:
+ 类型汇总
¦
+ -----aaa
¦ ¦____12121
¦ ¦____dfffaf
+ -----bbb
¦ ¦____asdasd
¦ ¦____2342
+ -----ccc
¦____fdsfsdf
¦_____ffesfsf
我用的是 Query1 控键,根节点下的附节点可以找出来,可以附节点下的子节点找不出来,请教各位高手!谢谢! (例子也行)
var
nodecel : array[0..10] of TtreeNode;
sqlstr,s1,s2:string;
tempstr :array[0..10] of string;
tempBoolean :array[0..10] of Boolean;
Nodetitle :TtreeNode;
begin
if (xlmc.text='') or (wz.text='') then begin
exit;
end;
screen.Cursor:=crHourGlass;
if Sender<>cmdok then
key.Text:='0';
TreeView1.Items.Clear;
TreeView1.Items.BeginUpdate;
new(nodeid);
dispose(nodeid);
nodecel[0] := TreeView1.Items.AddFirst (nil, xlmc.text);
nodecel[0].ImageIndex := 0;
nodecel[0].SelectedIndex := 3;
if wz.text<>'全部' then
sqlstr:='select 首桩号,首桩米,尾桩号,尾桩米,id from 绿化档案 where 道路='''+copy(xlmc.text,1,pos(':',xlmc.text)-1)+''' and 位置='''+wz.text+''' order by 首桩号,首桩米,尾桩号,尾桩米'
else
sqlstr:='select 首桩号,首桩米,尾桩号,尾桩米,绿化档案.位置,id from 绿化档案 INNER JOIN lib_位置 ON 绿化档案.位置 = lib_位置.位置 where 道路='''+copy(xlmc.text,1,pos(':',xlmc.text)-1)+''' order by 首桩号,首桩米,尾桩号,尾桩米,lib_位置.序号';
ADODataSet1.commandtext:=sqlstr;
ADODataSet1.open;
while not ADODataSet1.eof do
begin
tempBoolean[1]:=false;
s1:=ADODataSet1.FieldByName('首桩号').AsString;
s2:=ADODataSet1.FieldByName('首桩米').AsString;
if ADODataSet1.FieldByName('首桩米').asinteger=0 then
sqlstr:= s1
else
if ADODataSet1.FieldByName('首桩米').asinteger>0 then
sqlstr:= s1 +'(+'+s2+')'
else
sqlstr:= s1 +'('+s2+')';
sqlstr:= sqlstr+'--';
s1:=ADODataSet1.FieldByName('尾桩号').AsString;
s2:=ADODataSet1.FieldByName('尾桩米').AsString;
if ADODataSet1.FieldByName('尾桩米').asinteger=0 then
sqlstr:= sqlstr+s1
else
if ADODataSet1.FieldByName('尾桩米').asinteger>0 then
sqlstr:= sqlstr+s1 +'(+'+s2+')'
else
sqlstr:= sqlstr+s1 +'('+s2+')';
if wz.text='全部' then
begin
if (tempstr[1] <>sqlstr) then
begin
tempstr[1] :=sqlstr;
nodecel[1] := TreeView1.Items.AddChild(nodecel[0], tempstr[1]);
nodecel[1].ImageIndex := 1;
nodecel[1].SelectedIndex := 3;
end;
new(nodeid); nodeid^:=ADODataSet1.FieldByName('id').asinteger;
Nodetitle :=TreeView1.Items.AddChildObject(nodecel[1], ADODataSet1.FieldByName('位置').AsString,nodeid);
Nodetitle.ImageIndex := 2;
Nodetitle.SelectedIndex := 3;
end
else
begin
if (tempstr[1] <>sqlstr) then
new(nodeid); nodeid^:=ADODataSet1.FieldByName('id').asinteger;
Nodetitle :=TreeView1.Items.AddChildObject(nodecel[0], sqlstr,nodeid);
Nodetitle.ImageIndex := 2;
Nodetitle.SelectedIndex := 3;
end;
ADODataSet1.Next;
end;
nodecel[0].Expanded := True;
ADODataSet1.close;
ADODataSet1.CursorLocation:=clUseClient;
ADODataSet1.CursorType:=ctDynamic;
ADODataSet1.LockType:=ltOptimistic;
TreeView1.Items.endUpdate;
screen.Cursor:=crDefault;
end;
var mLocalName: string;
TreeNode: TTreeNode;
Ads_Tmp: TADODataSet;
begin
ADS_Tmp := TADODataSet.Create(Self);
ADS_Tmp.Connection := ADOConn;
with ADS_Tmp do
begin
Close;
CommandText := 'Select * from Type Where ParentID =' + FNodeName;
Open;
First;
while not Eof do
begin
mLocalName := FieldbyName('ID').Asstring;
TreeNode := TreeView.Items.AddChild(Node, FieldByName('Name').AsString);
CreateSubTree(mLocalName, TreeNode);
Next;
end;
end;
end;
一个低归函数
procedure TForm1.FormShow(Sender: TObject);
var
i,j:integer;
s:string;
node,subnode:ttreenode;
begin
node:=form1.TreeView1.Items.Add(nil,'班级管理');
node.SelectedIndex:=0;
dm.Table1.Open;
i:=dm.Table1.RecordCount;
if i>0 then
begin
for j:=0 to i-1 do
begin
s1:=dm.Table1.FieldValues['班级名称'];//+'['+dm.Table1.FieldValues['届']+']';
s2:=dm.Table1.FieldValues['届'];
s:=s1+'['+s2+'届]';
subnode:=form1.TreeView1.Items.AddChildObject(node,s,nil);
subnode.SelectedIndex:=dm.Table1.RecNo+1;
form1.TreeView1.Items.AddChildObject(subnode,'学生基本信息',nil);
form1.TreeView1.Items.AddChildObject(subnode,'学生成绩',nil);
form1.TreeView1.Items.AddChildObject(subnode,'宿舍安排',nil);
form1.TreeView1.Items.AddChildObject(subnode,'班干部信息',nil);
form1.TreeView1.Items.AddChildObject(subnode,'班级大事记',nil);
dm.Table1.Next;
end;
end;