2017-07-20 17 views
0

ListViewでデータをインポートする際にエラーを表示するフォームを作成しました。グループは正しく作成されていますが、表示されていても「不可視」です。グループ内の空白の項目を表示するListView

は、これは私が私の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; 

答えて

2

あなたのコードが第二に、最初にグループIDをキャプションを割り当て、2つの項目が追加されます。

Frm_Erros.lvErrors.Items.Add.Caption := vMessage.GetFullMessage; 
    Frm_Erros.lvErrors.Items.Add.GroupID := vGroups.IndexOf(vMessage.Source); 

何がやりたいことは、私は推測する以下の通りです:で、あなたが列を追加することも可能であるかもしれない

vListItem := Frm_Erros.lvErrors.Items.Add; 
vListItem.Caption := vMessage.GetFullMessage; 
vListItem.GroupID := vGroups.IndexOf(vMessage.Source); 

更新:適切なタイプのvListItemを宣言して、既に設計時間が必要な場合は、

vColumn := Frm_Erros.lvErrors.Columns.Add; 
vColumn.Caption := 'Error Message'; 
vColumn.Width := 300; 

実行時に追加してください。列がなければ、サンプルプロジェクトのグループの下に同じ空白行がありました。

+0

私はこれも大変でしたが、これは私の問題を解決していない、それでも間に空白を持つグループを表示しています。キャプションが表示されていない場合はほぼ同じです –

+0

getFullMessageをデバッグすると、期待していたものが返されます。 – nil

+0

はい、正しく、毎回正しく、キャプションに正しく追加します。 –

関連する問題