Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Listview mit mehreren Spalten


real76 - Mi 05.04.06 14:45
Titel: Listview mit mehreren Spalten
Hi,

ich bin neu in der Delphi(6)-Programmierung und versuche mich schon seit mehreren Stunden daran, ein Listview mit zwei Spalten mit Daten (Strings) zu füllen. :x

Mein Code zum Füllen sieht wie folgt aus:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
   item: TListItem;
begin
   ...
   item := Form1.ListView1.Items.Add;
   item.Caption := '';
   item.SubItems.Add('Wert Spalte1');
   item.SubItems.Add('Wert Spalte2');

Muss ich irgendwas beim Design der Listview beachten oder warum schlägt mein Versuch fehl.

Die Threads in diesem Forum zum Thema Listview übersteigen meine Vorstellungskraft - ich wollte erstmal simpel anfangen. :)

Danke
René


BenBE - Mi 05.04.06 14:54

Bei der Listview musst Du zuerst den Style auf Report einstellen und zusätzlich beachten, dass die erste Spalte über ListItem.Caption angesprochen wird. Jede weitere (also ab der zweiten Spalte) trägst Du unter SubItems ein.


einfach112 - Di 25.04.06 23:45
Titel: wo wir gerade dabei sind !
Hallo !
kannst du mir zum gleichen thema vieleicht auch noch weiterhelfen ??
ich habe auch eine tabelle die ganz genau so aufgebaut ist !
jetzt würde ich mir gerne den inhalt einer markierten zeile
z.B. in label1.caption anzeigen lassen !
naja ok das bekomme ich so gerade noch hin mit :
label1.Caption := LvHeaders.Selected.SubItems.GetText;
das problem ist aber ich würde mir gerne nur den inhalt der 4ten spalte anzeigen lassen !
kannste mir sagen wie das genau geht ?
Währe über hilfe sehr dankbar !
mfg
einfach112


Logikmensch - Mi 26.04.06 06:24

Hallo!

die gerade markierte Zeile bekommst Du über


Delphi-Quelltext
1:
ListView.Selected                    


raus. Bitte auch auf nil prüfen. Wenn Du z.B. schreibst:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
...
var
  li:TListItem;
begin
  ....
  li:=ListView.Selected;
  if assigned(li) then begin
    if li.subitems.count>=3 then begin
      showmessage(li.subitems[2]); //Inhalt der 4.Spalte der markierten Zeile
    end
  end
  ....
end;


Dann bekommst Du den Inhalt der 4. Spalte angezeigt, vorausgesetzt, es gibt auch einen Subitems-Inhalt dazu. Auch hier bitte prüfen (Achtung: Subitems-Zählung beginnt bei 0. Subitems[0] ist aber die Spalte Nr. 2 weil, wie oben bereits erwähnt, die Caption die Spalte Nr. 1 übernimmt. Ein bisschen verwirrend, hihi).
Interessanterweise kann man mehr Subitems in einem Item haben, als Spalten da sind und umgekehrt. Also Vorsicht.

Viel Spaß. Die ListView ist eines der vielseitigsten Controls. Ich liebe es! :-D

Liebe Grüße,

Claus.


einfach112 - Mi 26.04.06 10:10
Titel: THX
jo thx hat mir sehr geholfen !
thx cu
einfach112