var
  tmp:tstringlist;
  i:integer;
  addlistitem:tlistitem;
begin
  tmp:=tstringlist.create;
  ListView1.Items.BeginUpdate;
  try
    tmp.loadfromfile('c:\1.txt');
    for i:=0 to tmp.count-1 do
    begin
      addlistitem:=listview1.items.add;
      addlistitem.caption:=tmp.strings[i];
      addlistitem.imageindex:=1;
      //application.postmessage;
    end;
  finally
    tmp.free;
    ListView1.Items.EndUpdate;
  end;
end;

解决方案 »

  1.   

    //显示20条记录,自己控制记录位置
      PageNum := 1;
      PageQuan:= 20;
      ADODataSet1.Open;
      ADODataSet1.Recordset.PageSize := PageQuan;
      ADODataSet1.Recordset.AbsolutePosition := PageNum;
    //下一页 
      INC(PageNum,1);
      if PageNum >= ADODataSet1.Recordset.PageCount then
        PageNum := ADODataSet1.Recordset.PageCount;
      ADODataSet1.Recordset.PageSize := PageQuan;
      ADODataSet1.Recordset.AbsolutePosition := PageQuan*(PageNum-1)+1;
      ShowData(Sender);procedure TForm1.ShowData(Sender: TObject);
    var
      iCount: Integer;
      rs:_RecordSet;
      LST: TListItem;
    begin
      //cleardata;
      ListView1.Items.Clear;
      rs:=ADODataSet1.RecordSet;
      for iCount:=1 to PageQuan do
      begin
        if (rs.EOF) or (rs.Bof) then Break;
        LST := ListView1.Items.Add;
        LST.Caption := rs.Fields.Get_Item('Col1').Value;
        LST.SubItems.Add(rs.Fields.Get_Item('Col2').Value);
        rs.MoveNext;
      end;
    end;
      

  2.   

    //显示20条记录,自己控制记录位置
      PageNum := 1;
      PageQuan:= 20;
      ADODataSet1.Open;
      ADODataSet1.Recordset.PageSize := PageQuan;
      ADODataSet1.Recordset.AbsolutePosition := PageNum;
    //下一页 
      INC(PageNum,1);
      if PageNum >= ADODataSet1.Recordset.PageCount then
        PageNum := ADODataSet1.Recordset.PageCount;
      ADODataSet1.Recordset.PageSize := PageQuan;
      ADODataSet1.Recordset.AbsolutePosition := PageQuan*(PageNum-1)+1;
      ShowData(Sender);procedure TForm1.ShowData(Sender: TObject);
    var
      iCount: Integer;
      rs:_RecordSet;
      LST: TListItem;
    begin
      //cleardata;
      ListView1.Items.Clear;
      rs:=ADODataSet1.RecordSet;
      for iCount:=1 to PageQuan do
      begin
        if (rs.EOF) or (rs.Bof) then Break;
        LST := ListView1.Items.Add;
        LST.Caption := rs.Fields.Get_Item('Col1').Value;
        LST.SubItems.Add(rs.Fields.Get_Item('Col2').Value);
        rs.MoveNext;
      end;
    end;
      

  3.   

    哦,这个方法倒是可行!那如何加速显示,如果改用listbox显示数据,就会很快,该怎么办
      

  4.   

    ListView是很慢的,所以如果你只是想显示数据的话,不如用 stringGrid,需要对特定字段排序的话自己写排序的函数,或者用TMS的 advStringGrid,反正ListView在效率上是不行的