Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#2

AW: 1*1 mit ListView darstellen?

  Alt 13. Okt 2012, 00:24
Gehe ich richtig davon aus, dass du noch keine Erfahrung mit ListView hast?

Zuerst ViewStyle auf vsReport stellen, dann Columns bilden. Geht im Objektinspektor, aber auch zu Laufzeit.

Delphi-Quellcode:
var
  NewColumn: TListColumn;
begin
  with ListView do
  begin
    NewColumn := Columns.Add;
    NewColumn.Caption := 'Haupt';
    NewColumn := Columns.Add;
    NewColumn.Caption := 'Sub';
Beachte, dass das du hier etwas verdreht arbeitest, als mit NewColumn := Columns.Add fügst du ein neues Column dazu, mit NewColumn.Caption := 'Haupt' gibst du der Spalte eine Bezeichnung. Diese Art ist einfache. Columns.Add erstellt eine Spalte und die Adresse gibst du an NewColumn weiter. Schon kannst du mithilfe der NewColumn Variable arbeiten. Ist einfacher. Aber das geht auch so

Delphi-Quellcode:
begin
  with ListView do
  begin
    Columns.Add;
    Columns[0].Caption := 'Haupt';
    Columns.Add;
    Columns[1].Caption := 'Sub';
Beides geht, je nachdem was mal lieber hat. Das sind die Spaltenbezeichnungen. Ohne die sieht man die Spalte nicht.

Fast genauso funktioniert es mit den Items

Delphi-Quellcode:
var
  ListItem: TListItem;
begin
  with ListView do
  begin
    ListItem := Items.Add;
    ListItem.Caption := 'Hauptspalte';
    ListItem.SubItems.Add('Subspalte1');
    ListItem.SubItems.Add('Subspalte2');
    ListItem.SubItems.Add('Subspalte3');
  end;
end;
Auch hier kann man direkt zugreifen:

Delphi-Quellcode:
    Items.Add;
    Items[0].Caption := 'Hauptspalte';
    Items[0].SubItems.Add('Subspalte1');
    Items[0].SubItems.Add('Subspalte2');
    Items[0].SubItems.Add('Subspalte3');
Auf Caption einfach direkt zugreifen, auf Subitems später so:

Delphi-Quellcode:
    Items[0].SubItems[0] := 'Subspalte1A';
    Items[0].SubItems[1] := 'Subspalte2B';
    Items[0].SubItems[2] := 'Subspalte3C';
Fast wie StringGrid, aber nur fast. Und wie überall, man kann auf nichts zugreifen was noch nicht da ist. Also zuerst erstellen und erst dann zugreifen. Vielleicht ist es deshalb besser so zu arbeiten als direkt zuzugreifen.

Delphi-Quellcode:
  with ListView do
  begin
    ListItem := Items.Add;
    ListItem.Caption := 'Hauptspalte';
    ListItem.SubItems.Add('Subspalte1');
Für den nächsten Item wieder Item.Add eingeben.

Geändert von Popov (13. Okt 2012 um 00:36 Uhr)
  Mit Zitat antworten Zitat