是TreeView吗? 这是我以前用 ListView & Treeview 做的一个东西,单击树节点,在listview中生成显示的详细资料; 可能对你有用 procedure TfrmDemoTree.InitListView; //初始化ListView var name,strSQL:string; lvItem:TListItem; Tempqry:TQuery; begin Tempqry := TQuery.Create(self); try lvDemoTree.Items.Clear; //清空 name := tvDemoTree.Selected.Text; strSQL := ' select id ' + ' from Tcity ' + ' where name='''+name+''''; ExecQry(strSQL,dmDemoTree.qryLV,true); if not dmDemoTree.qryLV.Eof then begin strSQL := ' select * ' + ' from Tcity where parentid=' + inttostr(dmDemoTree.qryLV.fieldbyname('id').asinteger); ExecQry(strSQL,dmDemoTree.qryLV,true); while not dmDemoTree.qryLV.Eof do begin lvItem := lvDemoTree.Items.Add; lvItem.Caption := inttostr(dmDemoTree.qryLV.fieldbyname('id').AsInteger); lvItem.SubItems.Add(dmDemoTree.qryLV.fieldbyname('name').AsString); strSQL := ' select name ' + ' from Tcity ' + ' where id=' + inttostr(dmDemoTree.qryLV.fieldbyname('parentid').AsInteger); ExecQry(strSQL,Tempqry,true); lvItem.SubItems.Add(Tempqry.fieldbyname('name').AsString); dmDemoTree.qryLV.Next; end; end; finally Tempqry.Free; end; end;
procedure Tfrm_main.RefreshCata; var node:TTreeNode; str,id:String; begin list_cata.Items.Clear;//清空树视图 adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add('select * from tablename'); adoquery1.Open; while Not sql_cata.Eof do begin str:=adoquery1.fieldbyname('fielname').asstring; node:=list_cata.Items.Add(nil,str);//加入树视图内容. adoquery1.Next; end; end; 不建议你用这种方法来更新如果数据量很大的话,会影响你程序速度,你可以在初始化时全部读出索引,存到字符串列表中,然后对列表进行操作,速度快.
这是我以前用 ListView & Treeview 做的一个东西,单击树节点,在listview中生成显示的详细资料;
可能对你有用
procedure TfrmDemoTree.InitListView;
//初始化ListView
var
name,strSQL:string;
lvItem:TListItem;
Tempqry:TQuery;
begin
Tempqry := TQuery.Create(self);
try
lvDemoTree.Items.Clear; //清空
name := tvDemoTree.Selected.Text;
strSQL := ' select id '
+ ' from Tcity '
+ ' where name='''+name+'''';
ExecQry(strSQL,dmDemoTree.qryLV,true);
if not dmDemoTree.qryLV.Eof then
begin
strSQL := ' select * '
+ ' from Tcity where parentid='
+ inttostr(dmDemoTree.qryLV.fieldbyname('id').asinteger);
ExecQry(strSQL,dmDemoTree.qryLV,true);
while not dmDemoTree.qryLV.Eof do
begin
lvItem := lvDemoTree.Items.Add;
lvItem.Caption := inttostr(dmDemoTree.qryLV.fieldbyname('id').AsInteger);
lvItem.SubItems.Add(dmDemoTree.qryLV.fieldbyname('name').AsString);
strSQL := ' select name '
+ ' from Tcity '
+ ' where id='
+ inttostr(dmDemoTree.qryLV.fieldbyname('parentid').AsInteger);
ExecQry(strSQL,Tempqry,true);
lvItem.SubItems.Add(Tempqry.fieldbyname('name').AsString);
dmDemoTree.qryLV.Next;
end;
end;
finally
Tempqry.Free;
end;
end;
node:TTreeNode;
str,id:String;
begin
list_cata.Items.Clear;//清空树视图
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from tablename');
adoquery1.Open;
while Not sql_cata.Eof do
begin
str:=adoquery1.fieldbyname('fielname').asstring;
node:=list_cata.Items.Add(nil,str);//加入树视图内容.
adoquery1.Next;
end;
end;
不建议你用这种方法来更新如果数据量很大的话,会影响你程序速度,你可以在初始化时全部读出索引,存到字符串列表中,然后对列表进行操作,速度快.