Listview 显示组内空白项的列表视图
我创建了一个表单来显示ListView导入数据时的错误,该组的创建是正确的,但即使显示有iTen,它们也是“不可见的” 这是我填充ListView的方式:Listview 显示组内空白项的列表视图,listview,delphi,blank-line,Listview,Delphi,Blank Line,我创建了一个表单来显示ListView导入数据时的错误,该组的创建是正确的,但即使显示有iTen,它们也是“不可见的” 这是我填充ListView的方式: class procedure TFrm_Erros.InternalShowErros(ATitle: string; AMessageErrorList: TMessageList); var vMessage: TMessage; i: integer; vGroups: TStrin
class procedure TFrm_Erros.InternalShowErros(ATitle: string; AMessageErrorList: TMessageList);
var
vMessage: TMessage;
i: integer;
vGroups: TStringList;
vListGroup: TListGroup;
begin
vGroups := TStringList.Create;
Frm_Erros := TFrm_Erros.Create(nil);
Frm_Erros.lvErrors.Items.BeginUpdate;
try
TFrm_Erros.SetTitle(ATitle);
Frm_Erros.lvErrors.Items.Clear;
Frm_Erros.lvErrors.Groups.Clear;
vGroups.Sorted := True;
vGroups.Duplicates := dupIgnore;
for i := 0 to AMessageErrorList.Count - 1 do
begin
vGroups.Add(AMessageErrorList[i].Source);
end;
for i := 0 to vGroups.Count - 1 do
begin
vListGroup := Frm_Erros.lvErrors.Groups.Add;
vListGroup.Header := Format('%s (%d)', [vGroups[i], AMessageErrorList.GetCountForSource(vGroups[i])]);
vListGroup.State := vListGroup.State + [lgsCollapsible];
vListGroup.GroupID := i;
end;
for i := 0 to AMessageErrorList.Count - 1 do
begin
vMessage := AMessageErrorList.Items[i];
Frm_Erros.lvErrors.Items.Add.Caption := vMessage.GetFullMessage;
Frm_Erros.lvErrors.Items.Add.GroupID := vGroups.IndexOf(vMessage.Source);
end;
finally
Frm_Erros.lvErrors.Items.EndUpdate;
vGroups.Free;
Frm_Erros.ShowModal;
end;
Frm_Erros.Free;
end;
您的代码正在添加两个项目,将标题分配给第一个项目,将GroupID分配给第二个项目
Frm_Erros.lvErrors.Items.Add.Caption := vMessage.GetFullMessage;
Frm_Erros.lvErrors.Items.Add.GroupID := vGroups.IndexOf(vMessage.Source);
我想您要做的是:声明适当类型的vListItem
,然后:
vListItem := Frm_Erros.lvErrors.Items.Add;
vListItem.Caption := vMessage.GetFullMessage;
vListItem.GroupID := vGroups.IndexOf(vMessage.Source);
更新:
如果不需要,您可能已经在设计时添加了列
vColumn := Frm_Erros.lvErrors.Columns.Add;
vColumn.Caption := 'Error Message';
vColumn.Width := 300;
在运行时添加它们。没有列,我在一个示例项目中的组下面有相同的空行 您的代码添加了两项,将标题分配给第一项,将GroupID分配给第二项
Frm_Erros.lvErrors.Items.Add.Caption := vMessage.GetFullMessage;
Frm_Erros.lvErrors.Items.Add.GroupID := vGroups.IndexOf(vMessage.Source);
我想您要做的是:声明适当类型的vListItem
,然后:
vListItem := Frm_Erros.lvErrors.Items.Add;
vListItem.Caption := vMessage.GetFullMessage;
vListItem.GroupID := vGroups.IndexOf(vMessage.Source);
更新:
如果不需要,您可能已经在设计时添加了列
vColumn := Frm_Erros.lvErrors.Columns.Add;
vColumn.Caption := 'Error Message';
vColumn.Width := 300;
在运行时添加它们。没有列,我在一个示例项目中的组下面有相同的空行 我也这样做了,但这并没有解决我的问题,仍然是显示组之间的空白。几乎就像没有显示标题一样。必须确定,调试getFullMessage时,是否会返回您期望的结果?是的,每次都正确地添加标题,并正确地更新了我的答案,您可能缺少ListView的列。谢谢,我知道这将是一个简单的想法,但是最好用另一只眼睛看。我也做了这个alread,但这并没有解决我的问题,仍然显示了两组之间的空白。几乎就像没有显示标题一样。必须确定,调试getFullMessage时,是否会返回您期望的结果?是的,每次都正确地添加标题,并正确地更新了我的答案,您可能缺少ListView的列。谢谢,我知道这将是一个简单的想法,但最好用另一只眼睛看。