Delphi 7: как заполнить Tlistview

У меня есть Tlistview с 3 столбцами, мне нужен объект Tcollection, как показано ниже.

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 столбца (Name, cip, StockQty), как я могу это сделать?

Спасибо.

надеюсь, я ясно выразился.


person TimeIsNear    schedule 12.08.2010    source источник


Ответы (1)


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

person Im0rtality    schedule 12.08.2010
comment
Большое спасибо Im0rtality. - person TimeIsNear; 12.08.2010
comment
Я предпочитаю избегать блоков WITH. Вместо этого я использую var li: TListItem; Затем в цикле for говорится: li := ListView1.Items.Add(); li.Caption... li.SubItems.Add... и т.д. - person Phil Gilmore; 12.08.2010
comment
Я также рекомендую использовать ListView1.Items.BeginUpdate и ListView1.Items.EndUpdate для переноса циклов, которые вставляют большое количество элементов. Он временно отключает пользовательский интерфейс, чтобы ускорить работу. - person Phil Gilmore; 12.08.2010
comment
begin действительно должен быть на новой строке. В противном случае опытному глазу покажется, что внутри оператора with находится только Caption := .... Также второй комментарий Фила Гилмора очень важен. - person Andreas Rejbrand; 12.08.2010
comment
Спасибо. Это мне очень помогло. - person Wayne Barron; 30.03.2017