Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Listview 显示组内空白项的列表视图_Listview_Delphi_Blank Line - Fatal编程技术网

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

我创建了一个表单来显示ListView导入数据时的错误,该组的创建是正确的,但即使显示有iTen,它们也是“不可见的”

这是我填充ListView的方式:

    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的列。谢谢,我知道这将是一个简单的想法,但最好用另一只眼睛看。