我的程序中有4个tstringlist,分别对应ListView的4列,请问有什么快速的方法把tstringlist的内容在listview中显示出来?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      StrList: TStrings;
      item: TListItem;
    begin
      StrList := TStringList.Create;
      try
        StrList.Add('bbb');
        StrList.Add('CCC');
        item := ListView1.Items.Add;
        item.Caption := 'AAA';
        item.SubItems.AddStrings(StrList);
      finally
        StrList.Free;
      end;
    end;//一个小小例子
      

  2.   

    var
      SL:TStrings;
      index:integer;
    begin
      SL:=TStringList.Create ;
      SL.Add('ddddddddd');
      SL.Add('ccccccccc');       for index:=0 to (SL.Count -1) do
           begin
                ListBox1 .Items.Add(SL[index]);
           end;
    end;
      

  3.   

    //为了简单地把问题说明白,我这里采用了硬编码的方法,但思路是很清晰的,方便改进。
    procedure TForm1.FormCreate(Sender: TObject);
    var
      I: Integer;
      NewColumn: TListColumn;
      ListItem: TListItem;
      ListView: TListView;
      Strings1,Strings2,Strings3,Strings4 : TStrings;
    begin
      Strings1 := TStringList.Create;      //释放的工作放在窗体销毁时做
      Strings1.Add('ok1');
      Strings1.Add('ok2');
      Strings1.Add('ok3');
      Strings1.Add('ok4');
      Strings2 := Strings1;
      Strings3 := Strings2;
      Strings4 := Strings3;
      ListView := TListView.Create(Self);  //同上
      with ListView do
      begin
        Parent := Self;
        Align := alClient;
        ViewStyle := vsReport;             //设置呈现的模式
        NewColumn := Columns.Add;          //添加四个列
        NewColumn.Caption := 'First';
        NewColumn := Columns.Add;
        NewColumn.Caption := 'Second';
        NewColumn := Columns.Add;
        NewColumn.Caption := 'Last';
        NewColumn := Columns.Add;
        NewColumn.Caption := 'One More';
        for I := 0 to 3 do
        begin
          ListItem := Items.Add;
          ListItem.Caption :=Strings1[I];
          ListItem.SubItems.Add(Strings2[I]);
          ListItem.SubItems.Add(Strings3[I]);
          ListItem.SubItems.Add(Strings4[I]);
        end;
      end;
    end;
      

  4.   

    几位大哥,我的四个tstringlist都是115000个的数据量噢,11万的数据量,怎么加好呢
      

  5.   

    那就程序控制呗,这也不难呀,千万不要一起读出来,因为结果是呵呵,读不出来。
    比如给你思路就是不要让ListView出现下拉菜单。自己实现翻页的效果,四个Button,一个ComboBox,四个Button分别是第一页、上一页等等,然后还可以实现直接选页。
    比方你想让用户一次看到30个记录,那么当用户选择了要看第30000-30030条记录的时候,相当于他选择了要看第301页的记录,那么你就可以按照我上面的方法:
    for I := 29999 to 30029 do
      begin
        ListItem := Items.Add;
        ListItem.Caption :=Strings1[I];
        ListItem.SubItems.Add(Strings2[I]);
        ListItem.SubItems.Add(Strings3[I]);
        ListItem.SubItems.Add(Strings4[I]);
      end;
    你可以试一试,应该没有大问题。