能否像C#中那样,先将数据添加到Items中,然后让ListView指定呢?比如我有100条数据,但获取这100条数据比较耗时,就想先添加到items中然后让ListView.Assign指定?知道的朋友帮一下,如果有代码就更好了,谢谢!

解决方案 »

  1.   

    窗体上放个listview1, 然后动态创建一个listview2,它不显示,只当做容器,
    你把listview2填充好后,用listview1.assign(listview2);
      

  2.   

    如果你是想数据多时不至于把UI界面卡住导致类似假死的情况,应该使用多线程,把跟ui无关的操作放到一个新的线程中去。
      

  3.   


    var
      lv2: TListView;// 填充一个动态创建的隐藏listview对象
    procedure TForm1.btn1Click(Sender: TObject);
    var
      its: TListItems;
      i: Integer;
    begin
      lv2.Free;
      lv2 := TListView.Create(nil);
      lv2.Hide;
      lv2.Parent := Self;
      for i := 0 to 99 do
      begin
        with lv2.Items.Add do
        begin
          Caption := '我是第' + Inttostr(i + 1) + '行';
          SubItems.Add('我是第' + Inttostr(i + 1) + '行的子项1');
          SubItems.Add('我是第' + Inttostr(i + 1) + '行的子项2');
        end;
      end;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      lv2.free;
    end;// assign 到显示的listview
    procedure TForm1.btn2Click(Sender: TObject);
    begin
      lv1.Items.Assign(lv2.Items);
    end;
      

  4.   

    我这不是不想创建一个VCL控件嘛。
    太占资源。
    有没有类似的类?
    先将数据填充到类里,然后再指定给ListView
      

  5.   


    怎么做呢?能否给点代码?谢谢了
    写一个能装Item的不就可以了。
      

  6.   

    TListItems 对象构造时是需要指定一个tlistview引用作为owner的,所以还不如直接构造一个隐藏的tlistview省事
      

  7.   

    我主要是在线程中操作数据的,所以不想在线程中再次创建一个VCL控件。如果有这样的类就最好了,哎TListItems 对象构造时是需要指定一个tlistview引用作为owner的,所以还不如直接构造一个隐藏的tlistview省事