-2

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

4

1 回答 1

2

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

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;

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;
于 2021-01-06T23:14:35.627 回答