使用cxTreeView1代替Treeview,如何在formshow事件中把数据库的值进行加载?
procedure TForm1.FormShow(Sender: TObject);
var
aNode:TTreeNode;
i,j:integer;
kind,tmpkind:string;
begin
SendMessage(ListBox1.Handle,LB_SetHorizontalExtent,5000, longint(0));
ADODataSet_life.Close;
ADODataSet_life.CommandText:='select distinct subject from 01 ';
ADODataSet_life.Open;
ADODataSet_life.First;
for i:=0 to ADODataSet_life.RecordCount-1 do
begin
kind:=ADODataSet_life.FieldByName('subject').AsString;
aNode := TreeView1.Items.AddChild(nil,kind) ; ADODataSet.Close;
ADODataSet.CommandText:='select name from 01 where subject=''' + kind + '''';
ADODataSet.Open;
ADODataSet.First;
for j:=0 to ADODataSet.RecordCount-1 do
begin
tmpkind:=ADODataSet.FieldByName('name').AsString;
TreeView1.Items.AddChild(aNode,tmpkind);
ADODataSet.Next;
end;
ADODataSet_life.Next;
end;
end;
这是使用的Treeview,有人说使用cxTreeView如果是10000条记录采用这个只需要几秒就显示出来了,使用Treeview需要10分钟左右,因此需要cxTreeView来显示,那么具体怎么做呢?
procedure TForm1.FormShow(Sender: TObject);
var
aNode:TTreeNode;
i,j:integer;
kind,tmpkind:string;
begin
SendMessage(ListBox1.Handle,LB_SetHorizontalExtent,5000, longint(0));
ADODataSet_life.Close;
ADODataSet_life.CommandText:='select distinct subject from 01 ';
ADODataSet_life.Open;
ADODataSet_life.First;
for i:=0 to ADODataSet_life.RecordCount-1 do
begin
kind:=ADODataSet_life.FieldByName('subject').AsString;
aNode := TreeView1.Items.AddChild(nil,kind) ; ADODataSet.Close;
ADODataSet.CommandText:='select name from 01 where subject=''' + kind + '''';
ADODataSet.Open;
ADODataSet.First;
for j:=0 to ADODataSet.RecordCount-1 do
begin
tmpkind:=ADODataSet.FieldByName('name').AsString;
TreeView1.Items.AddChild(aNode,tmpkind);
ADODataSet.Next;
end;
ADODataSet_life.Next;
end;
end;
这是使用的Treeview,有人说使用cxTreeView如果是10000条记录采用这个只需要几秒就显示出来了,使用Treeview需要10分钟左右,因此需要cxTreeView来显示,那么具体怎么做呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货