Zunächst muss man mittels der ViewStyle-Property die Ansicht umstellen auf vsRecord.
Spalten fügt man mittels der Columns-Property hinzu.
Dann kann man Zeilen mit der Items-Property hinzufügen. Der Text für die erste Spalte steht in deren Captions-Property und der Text für die weiteren Spalten in deren SubItems-Property:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
lc: TListColumn;
li: TListItem;
begin
lc := ListView1.Columns.Add;
lc.Caption := 'Caption1';
lc := ListView1.Columns.Add;
lc.Caption := 'Caption2';
lc := ListView1.Columns.Add;
lc.Caption := 'Caption3';
lc := ListView1.Columns.Add;
lc.Caption := 'Caption4';
li := ListView1.Items.Add;
li.Caption := 'Item1';
li.SubItems.Add('SubItem1.1');
li.SubItems.Add('SubItem1.2');
li.SubItems.Add('SubItem1.3');
li := ListView1.Items.Add;
li.Caption := 'Item2';
li.SubItems.Add('SubItem2.1');
li.SubItems.Add('SubItem2.2');
li.SubItems.Add('SubItem2.3');
end;
Zugriff geht analog:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
li: TListItem;
ErsteSpalte: string;
ZweiteSpalte: string;
DritteSpalte: string;
VierteSpalte: string;
begin
li := ListView1.Items[0];
ErsteSpalte := li.Caption;
ZweiteSpalte := li.SubItems[0];
DritteSpalte := li.SubItems[0];
VierteSpalte := li.SubItems[0];
end;
Es gibt leider keinen einfachen Zugriff wie beim StringGrid, deshalb bevorzuge ich in der Regel ein StringGrid oder ein DrawGrid (letzteres ist aber wieder komplexer), allerdings gibt es Leute, die finden, das sieht "veraltet" aus.
Man kann sich natürlich den Zugriff analog zum StringGrid selbst programmieren:
Delphi-Quellcode:
function TListView_GetCell(_lv: TListView; _Row, _Col: integer): string;
begin
li := _lv.Items[_Row];
if _Col = 0 then
Result := li.Caption
else
Result := li.SubItems[_Col-1];
end;
Schreibzugriff dann analog dazu.