Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 1*1 mit ListView darstellen? (https://www.delphipraxis.net/170974-1%2A1-mit-listview-darstellen.html)

AlexII 12. Okt 2012 22:41

Delphi-Version: 7

1*1 mit ListView darstellen?
 
Hallo Delphianer,

ich möchte das 1*1 mittels ListView darstellen. Die Logik an sich und die Schleifen sind kein Problem, nur weiß ich nicht wie ich die einzelnen Zellen in der ListView ansprechen bzw. füllen soll. :gruebel:

Und irgendwie finde ich keine gute Beschreibung dazu.

Kann mir da jemand weiter helfen?

Danke!

Popov 12. Okt 2012 23:24

AW: 1*1 mit ListView darstellen?
 
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.

AlexII 13. Okt 2012 12:12

AW: 1*1 mit ListView darstellen?
 
Danke dir!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz