ListItems eines Listviews mit einer eindeutigen ID versehen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Kiffi
Beiträge: 37
Registriert: Sa 27. Mär 2010, 11:39
OS, Lazarus, FPC: Windows 7 / Lazarus 1.0
CPU-Target: 32/64 bit

ListItems eines Listviews mit einer eindeutigen ID versehen

Beitrag von Kiffi »

Hallo,

ich kippe Daten einer Datenbank in ein Listview. Damit ich weiß, welcher Eintrag später selektiert wird,
schreibe ich den Primary Key (hier: ID) in die erste Spalte des Listviews. Die Spalte selber ist "Visible = False".

Code: Alles auswählen

SQLQuery1.Open;
 
  while not SQLQuery1.EOF do
  begin
    ListItem := TListItem.Create(ListView1.Items);
    ListItem.Caption := SQLQuery1.FieldByName('ID').Text; // 1. Spalte ist invisible
    ListItem.SubItems.Add(SQLQuery1.FieldByName('ProductName').Text);
    Listview1.Items.Additem(ListItem);
    SQLQuery1.Next;
  end;
 
SQLQuery1.Close;
Was meint Ihr? Ist das ein gangbarer Weg? Oder gibt's andere Herangehensweisen?
Unter VB würde ich die Tag-Eigenschaft eines ListItems verwenden.
Dieses gibt es anscheinend unter FreePascal nicht, oder?

Danke im Voraus & Grüße ... Kiffi

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: ListItems eines Listviews mit einer eindeutigen ID versehen

Beitrag von theo »

Ein ListItem hat einen Pointer "Data". damit kannst du afaik machen was du willst.

Wenn du nur ein Cardinal speichern willst, geht's so:
var MyCard:Cardinal;
...
ListItem.Data:=Pointer(MyCard);
zurück
MyCard:=PtrUInt(ListItem.Data);

Es gibt zwar Hints, dass das nicht portabel sei, ist aber schon OK.
Sonst kannst du da auch ein Objekt dranhängen, mit mehreren Infos.

Kiffi
Beiträge: 37
Registriert: Sa 27. Mär 2010, 11:39
OS, Lazarus, FPC: Windows 7 / Lazarus 1.0
CPU-Target: 32/64 bit

Re: ListItems eines Listviews mit einer eindeutigen ID versehen

Beitrag von Kiffi »

Hallo theo,
theo hat geschrieben:Ein ListItem hat einen Pointer "Data". damit kannst du afaik machen was du willst.
Passt! :D Danke für Deine schnelle Hilfe!

Grüße ... Kiffi

Antworten