避免在 ListView Delphi 10.4.2 中出现空白项

Avoid blank Items in ListView Delphi 10.4.2

我正在尝试显示从 TFDQueryTListView 的数据,但我不想使用数据绑定。

当我获取数据时,每条记录之间都有一个空白项目。我怎样才能避免这些空白项?

DM.Qdomains.Connection := DM.Conn;
DM.Qdomains.SQL.Text := 'SELECT * FROM domains';
DM.Qdomains.Active := True;
DM.Qdomains.First;
try
  while not DM.Qdomains.Eof do
  begin
    with DomainsListView.Items.Add do
    begin
      DomainsListView.Items.Add.Data['domain'] := DM.Qdomains.FieldByName('domain').AsString;
    end;
    DM.Qdomains.Next;
  end;
finally
  DM.Qdomains.Free;
end;

您正在为每个数据库记录调用 TListView.Items.Add() 两次

with DomainsListView.Items.Add do // <-- 1st call
begin
  DomainsListView.Items.Add.Data['domain'] := ...; // <-- 2nd call
end;

干脆去掉多余的Add()调用,eg:

DM.Qdomains.Connection := DM.Conn;
DM.Qdomains.SQL.Text := 'SELECT * FROM domains';
DM.Qdomains.Active := True;
DM.Qdomains.First;
try
  while not DM.Qdomains.Eof do
  begin
    DomainsListView.Items.Add.Data['domain'] := DM.Qdomains.FieldByName('domain').AsString;
    DM.Qdomains.Next;
  end;
finally
  DM.Qdomains.Free;
end;

我假设你没有这个单一的文本,所以我认为你的 ListView 外观是动态的? 我同意 Remy 的回答,但我不得不问你为什么不使用 Livebindings 来填充你的 ListView(如此简单且无需代码)?

(很抱歉将此作为答案,但声誉不高 => 没有评论也没有投票)