TListView 中的计算数字列表 - RAD Studio,Delphi

List of calculated numbers in TListView - RAD Studio, Delphi

好吧,我有计算“k”个数字的代码。 “k”是来自 TEdit 框的输入。为此,我决定使用 while 循环。每次计算我都会递减“k”,因此当“k”等于 0 时循环停止。我将每个数字存储在“num”整数变量中,所以它是临时的——“num”被每个循环路径覆盖。线索是我想在 TListView 中列出“num”,但我不知道该怎么做。我是初学者。任何博客、文章、YouTube 视频都可能有所帮助。我什至不知道如何问 Google 哈哈。请帮我。最后,我想要一个包含“k”个“num”个数字条目的列表。希望你明白。

处理此问题的最简单方法是执行以下操作:

procedure TMyForm.FillListView;
var
  i, k, num: Integer;
  item: TListItem;
begin
  ListView1.Items.BeginUpdate;
  try
    ListView1.Items.Clear;
    k := StrToInt(Edit.Text);
    for i := 0 to k-1 do
    begin
      num := ...;
      item := ListView1.Items.Add;
      item.Caption := IntToStr(num);
      // set other properties as needed ...
    end;
  finally
    ListView1.Items.EndUpdate;
  end;
end;

也就是说,在 virtual 模式下使用 TListView 会更好地处理这种情况(将其 OwnerData 属性 设置为 true ).您从开始的 k 值知道需要添加多少列表项,因此只需将 TListView.Items.Count 设置为该数字,然后在 TListView.OnData 事件中您可以设置 Caption(和其他属性)根据需要提供TListItem

var
  Nums: array of Integer;

procedure TMyForm.FillListView;
var
  i, k, num: Integer;
begin
  k := StrToInt(Edit.Text);
  if k < 0 then k := 0;
  SetLength(Nums, k);
  for i := 0 to k-1 do
  begin
    num := ...;
    Nums[i] := num;
  end;
  ListView1.Items.Count := k;
  ListView1.Invalidate;
end;

procedure TMyForm.ListView1Data(Sender: TObject; Item: TListItem);
begin
  Item.Caption := IntToStr(Nums[Item.Index]);
  // set other properties as needed ...
end;