我看过别人用,感觉效果比DBGrid好,但是我不会用。

解决方案 »

  1.   

    看看Columns和Items和ViewStyle三个属性你就后知道的
      

  2.   

    X: TListItem;
    X := ListView.Items.Add-->增加一个节点
    X.Text := 你的第一个字段的内容
    X.SubItems.Add( '你的第2个字段的内容' );
    X.SubItems.Add( '你的第3个字段的内容' );
    ....
      

  3.   

    给你例子参考
    procedure TForm1.Button1Click(Sender: TObject);
     var str,str1,str2:string;begin
    adoconnection1.ConnectionString :='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DRIVER=SQL Server;SERVER=(local);DATABASE=test;Trusted_Connection=Yes"';Adodataset1.Connection :=adoconnection1;
    Adodataset1.CommandText :='select * from testTable1';
    adodataset1.Open ;
    datasource1.DataSet :=adodataset1 ;
    dbGrid1.DataSource :=datasource1;
     all:=treeview1.Items.Add(nil,'all');
         while not adodataset1.Eof  do
          begin
            str:=adodataset1.FieldByName('c').AsString ;
             str1:=adodataset1.fieldbyname('d').AsString ;
             str2:=inttostr(adodataset1.fieldbynama('a').AsInteger );
         
             ListView1.Items.Add.Caption:=str;
          ListView1.Items[ListView1.Items.Count-1].SubItems.Add(str1);
           ListView1.Items[ListView1.Items.Count-1].SubItems.Add(str2);         if adodataset1.FieldByName('a').AsInteger =3 then
            begin
              ListView1.Items[ListView1.Items.Count - 1].ImageIndex := 1;        end
            else
            begin
              ListView1.Items[ListView1.Items.Count - 1].ImageIndex := 2;        end;        adodataset1.Next ;
          end;
           end;
      

  4.   

    三楼的做法是不行的,当记录数超过一定数目以后你的机器和程序就完蛋了,正确的做法,应该使用OwnerData属性,可以参看delphi自带的例子:VirtualListview
      

  5.   

    三楼的做法是不行的,当记录数超过一定数目以后你的机器和程序就完蛋了,正确的做法,应该使用OwnerData属性,可以参看delphi自带的例子:VirtualListview