سؤال

لدي ledlistview مع 3 أعمدة ، أحتاج من كائن tcollection لأن هذا يتبع

FListeDispoProduit := TListeDispoProduit.Create(TProduit);

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

ولكن عندما أحاول وضع هذا الكائن في TlistView فقط ، فإن العمود الأول (الاسم) هو populate أنا أكتب هذا:

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

أحتاج إلى ملء هذه الأعمدة الثلاثة (الاسم ، CIP ، StockQty) ، كيف يمكنني القيام بذلك؟

شكرًا لك.

آمل أن أكون واضحا.

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top