2010-08-12 33 views
2

我有一個TListView的3列,我從Tcollection對象需要,因爲這遵循德爾福7:如何用紅色填充的TListView

FListeDispoProduit := TListeDispoProduit.Create(TProduit); 

    with (FListeDispoProduit) do 
    begin 
    with TProduit(Add) do 
    begin 
     Name := 'Produit 01'; 
     CIP := 'A001'; 
     StockQty := 3; 
    end; 

但是,當我試圖把這個對象進入了TListView僅第一列(名稱)是填充 我寫這篇文章:

for i := 0 to FListeDispoProduit.Count -1 do 
    Tlistview1.Items.Insert(i).Caption := TProduit(FListeDispoProduit.Items[i]).Name; 

我需要填補這些3列(名稱,CIP,StockQty),我該怎麼辦呢?

謝謝。

希望我是清楚的。

回答

5
for i := 0 to FListeDispoProduit.Count -1 do 
    with ListView1.Items.Add() do begin 
     Caption := TProduit(FListeDispoProduit.Items[i]).Name; 
     SubItems.Add(TProduit(FListeDispoProduit.Items[i]).CIP); 
     SubItems.Add(IntToStr(TProduit(FListeDispoProduit.Items[i]).StockQty)); 
    end; 

,並添加更多的TListView的

+0

列非常感謝您Im0rtality。 – TimeIsNear 2010-08-12 08:22:10

+1

我寧願避免塊。相反,我使用var li:TListItem;然後,在for循環中,表示立:= ListView1.Items.Add(); li.Caption ... li.SubItems.Add ...等 – 2010-08-12 17:28:23

+7

我還推薦使用ListView1.Items.BeginUpdate和ListView1.Items.EndUpdate來包裝插入大量項目的循環。它暫時禁用ui來加快速度。 – 2010-08-12 17:31:32

0
Procedure TForm1.FillListView; 
var 
    i: Integer; 
    ListItem: TListItem; 
begin 
    try 
    ListView1.Items.BeginUpdate; 
    try 
     ListView1.Clear; 
     for i := 1 to 9 do 
     with ListView1 do 
      begin 
      ListItem := ListView1.Items.Add; 
      Listitem.Caption := 'Caption '+IntToStr(i); 
      ListItem.SubItems.Add('Subitem1 '+IntToStr(i)); 
      ListItem.SubItems.Add('Subitem2 '+IntToStr(i)); 
      end; 
    finally 
     ListView1.Items.EndUpdate; 
    end; 
    except 
    on E: Exception do 
     MessageDlg(PWideChar(E.Message), TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], 0); 
    end; 
end;