procedure Treaderform.Button4Click(Sender: TObject);
begin
  try
    with datamoduleado.ADOQuery1 do
    //以下代码将读者数据表reader中所有记录加入到listview1中
    begin
      close;
      sql.Clear;
      sql.Add('select * from reader order by readerid');
      open;      
      listview1.Items.Clear;
      while not eof do
        begin
         with listview1.Items.Add do
          begin
            caption:=fieldbyname('readerid').AsString;
            subitems.Add(fieldbyname('name').AsString);
            if fieldbyname('sex').AsString='1'then
               subitems.Add('女')
            else
               subitems.Add('男');
            subitems.Add(fieldbyname('idcardno').AsString);
          end;
          next;
        end;
        close;
    end;
  except
      listview1.Items.Clear;
      messagedlg('刷新出错',mterror,[mbok],0);
  end;
end;以上就是我的代码,但结果却是什么都显示不出来,我设置了listview的viewstyle为vsReport,showcolumnheaders为true,可就是在屏幕上什么都显示不出来,请各位同学帮我看看是怎么回事,另外,我要是把listview的viewstyle设为其他值,则则能显示数据的一部分,但显示时,就是以大白页,和windows德listview一点联系都看不出来

解决方案 »

  1.   

    你看一下Delphi自带的Demo,一个关于虚拟表的。
      

  2.   

    viewstyle为vsReport,columns加上你要的列名(相应字段)我开始也出现过这样的问题,后来解决了~~~
    //显示读者列表
    procedure TFormReader.Button2Click(Sender: TObject);
    begin
     try
           with  DataModuleADO.ADOQuery1 DO
           begin
            SQL.Clear;
            SQL.Add('select * from reader order by readerID');
            Open;
            Listview1.Items.Clear;
            while not eof do
             begin
             with Listview1.Items.Add do
                begin
               caption:=FieldByName('readerID').Asstring;            subitems.add(fieldbyname('name').Asstring);
               if fieldbyname('sex').asstring='1'then
                subitems.Add('女')
                else
               subitems.add('男');
               subitems.add(fieldbyname('IDCardNO').Asstring);         end;
             next;
             end;
             close;
           end;
     except
     Listview1.items.clear;
     messagedlg('刷新操作出错',mtError,[mbOK],0);
     end;end;