避免在 ListView Delphi 10.4.2 中出现空白项
Avoid blank Items in ListView Delphi 10.4.2
我正在尝试显示从 TFDQuery
到 TListView
的数据,但我不想使用数据绑定。
当我获取数据时,每条记录之间都有一个空白项目。我怎样才能避免这些空白项?
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(如此简单且无需代码)?
(很抱歉将此作为答案,但声誉不高 => 没有评论也没有投票)
我正在尝试显示从 TFDQuery
到 TListView
的数据,但我不想使用数据绑定。
当我获取数据时,每条记录之间都有一个空白项目。我怎样才能避免这些空白项?
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(如此简单且无需代码)?
(很抱歉将此作为答案,但声誉不高 => 没有评论也没有投票)