![]() |
Selected ListView-Query-Ergebnis in Variable speichern
Hallo, ich brauche mal wieder Hilfe. Eigentlich habe ich so ziemlich
![]() Ich habe mir eine ListView erstellt:
Delphi-Quellcode:
Bei einem Klick auf den ListView-Button, soll das Ergebnis eines Queries in einer Variable gespeichert werden.
ListView1.BeginUpdate;
try while not FDStoredProc1.eof do begin LItem := ListView1.Items.Add; LItem.Detail := FDStoredProc1.FieldByName('Vorname').AsString + ' ' + FDStoredProc1.FieldByName('Name').AsString; FDStoredProc1.Next; end; finally ListView1.EndUpdate; ListView1.Visible := true; end;
Delphi-Quellcode:
Das bringt mir leider nur die allerletzten Werte aus der Datenbank. Ist mir auch relativ klar, warum ich nur den letzten Wert bekomme, allerdings weiß ich nicht, wie ich diesen Fehler beheben kann.
procedure TForm1.ListView1ButtonClick(const Sender: TObject;
const AItem: TListItem; const AObject: TListItemSimpleControl); var LLocal : TRec; begin if Assigned(ListView1.Selected) then begin LLocal.wert1 := FDStoredProc1.FieldByName('SpalteA').AsFloat; LLocal.wert2 := FDStoredProc1.FieldByName('SpalteB').AsFloat; end; end; |
AW: Selected ListView-Query-Ergebnis in Variable speichern
Ich würde die benötigten Werte zusätzlich im ListViewItem hinterlegen ( Objects oder Tag)
|
AW: Selected ListView-Query-Ergebnis in Variable speichern
Zitat:
Bei Objects bekomme ich die Meldung, dass es eine Read-Only Eigenschaft ist und Tag nimmt anscheinend nur Int-Werte. |
AW: Selected ListView-Query-Ergebnis in Variable speichern
Man kann in ListViewItem.Tag einen Wert, z.B. die ID des zugehörigen Objekts in der Datenbank, speichern.
Im OnClick kannst du den Tag dann auslesen und weisst, welche Daten du aus der Datenbank holen muss (die mit der ID, die in Tag steht). |
AW: Selected ListView-Query-Ergebnis in Variable speichern
Delphi-Quellcode:
var
TitInfo = class ID: Integer; A, B: Float end;
Delphi-Quellcode:
it: TitInfo;
... ListView1.BeginUpdate; try while not FDStoredProc1.eof do begin it := TitInfo.Create; it.A := FDStoredProc1.FieldByName('SpalteA').AsFloat; it.B := FDStoredProc1.FieldByName('SpalteB').AsFloat; LItem := ListView1.Items.Add; LItem.Detail := FDStoredProc1.FieldByName('Vorname').AsString + ' ' + FDStoredProc1.FieldByName('Name').AsString; LItem.Tag := Integer( it); FDStoredProc1.Next; end; finally ListView1.EndUpdate; ListView1.Visible := true; end;
Delphi-Quellcode:
procedure TForm1.ListView1ButtonClick(const Sender: TObject;
const AItem: TListItem; const AObject: TListItemSimpleControl); var LLocal : TRec; it: TitInfo; begin if Assigned(ListView1.Selected) then begin it := TitInfo(AItem.Tag); LLocal.wert1 := it.A; LLocal.wert2 := it.B; end; end; |
AW: Selected ListView-Query-Ergebnis in Variable speichern
Ähm... ist das korrekt, dass die Klasse ins Property Tag gespeichert wird? Sollte das nicht eher ins Data oder Object sein (hab Delphi gerade nicht zur Hand).
|
AW: Selected ListView-Query-Ergebnis in Variable speichern
Man kann es, wie geschrieben auch zu Objects hinzufügen. Funktioniert aber auch so.
Man darf halt nicht vergessen beim Freigeben der Liste auch die verlinkten Objekte mit freizugeben ( wenn kein ARC) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz