![]() |
Delphi-Version: 5
TListbox füllen und abfragen
Hallo zusammen, ich habe eine Listbox die ich in einer Schleife per :
Listbox1.Items.Add (ZQuery1.FieldByName('gesamtname').AsString); befülle dieser gesamtname setzt sich aus nachfolgender Query zusammen. select vorname || ', ' || name as gesamtname from mitarbeiter; Kann ich da jetzt noch die user_id aus der DB (unsichtbar) hinterlegen und auf diese bei der Auswahl eines Namens in der Listbox zugreifen? Danke für eure Hilfe |
AW: TListbox füllen und abfragen
Verwende AddObject, dann kannst Du dort die ID hinterlegen
|
AW: TListbox füllen und abfragen
ich danke dir
Gruss KHH |
AW: TListbox füllen und abfragen
Der richtige Weg geht eigentlich etwas anders.
Aus der Query erstellt man sich ein DatenObject. Dieses DatenObject ab in eine ObjectList. Von der ObjectList füllt man dann die ListBox. Den anzuzeigenden Text nimmt man sich aus der (überschriebenen) Methode
Delphi-Quellcode:
TObject.ToString
Delphi-Quellcode:
Über das ausgewählte Item von so einem Listen-Control bekomme ich nun die Referenz, den Referenz-Typ und damit alle anderen zugehörigen Informationen.
procedure FillStrings( AStrings : TStrings; ADataList : TObjectList );
var LIdx : Integer; begin AStrings.BeginUpdate; try AStrings.Clear; for LIdx := 0 to ADataList.Count - 1 do begin AStrings.AddObject( ADataList[LIdx].ToString, ADataList[LIdx] ); end; finally AStrings.EndUpdate; end; end; Dadurch wird es egal, was für Objekte ich mit dem Listen-Control verknüpfen möchte - eben auch gemischt wie z.B. Personen, Firmen. Über den Referenz-Typ bekomme ich das heraus und kann damit verbundene Aktionen einleiten. |
AW: TListbox füllen und abfragen
alsoo
ich habe mir jetzt ein Objekt mit den entsprechenden Setter und Getter erstellt: dann die Werte, beispielhaft, zugewiesen MyMitarbeiter:= TMitarbeiter.create(); MyMitarbeiter.SetName('Meier'); und der Objektlist übergeben: MyMitarbeiterList.Add(MyMitarbeiter); wie komme ich jetzt an die einzelnen Werte, um sie in meineListbox zu schreiben? oder hab ich das Ganze falsch verstanden ? ich danke euch , gruss kH |
AW: TListbox füllen und abfragen
Ob das in FPC schon so implementiert ist kann ich nicht adhoc sagen (müsste ich jetzt nachschauen ... kannst du ja auch machen ;)) in Delphi gibt es die virtuelle Methode
![]()
Delphi-Quellcode:
Das macht man dann für jede Klasse, die man in so ein Listencontrol reinklatschen möchte.
TPerson = class
private FFirstname : string; FLastname : string; public function ToString : string; override; property Firstname : string read FFirstname write FFirstname; property Lastname : string read FLastname write FLastname; end; function TPerson.ToString : string; begin Result := FLastname + ', ' + FFirstname; end; Und nun ganz einfach damit das Control füllen:
Delphi-Quellcode:
Die Methode
procedure FillStrings( AStrings : TStrings; ADataList : TObjectList );
var LIdx : Integer; begin AStrings.BeginUpdate; try AStrings.Clear; for LIdx := 0 to ADataList.Count - 1 do begin AStrings.AddObject( ADataList[LIdx].ToString, // da wird das jetzt benutzt ADataList[LIdx] ); end; finally AStrings.EndUpdate; end; end;
Delphi-Quellcode:
ist eben für so eine String-Repräsentation von einer Instanz vorgesehen um diese z.B. in so einem einfachen List-Control (ListBox, ComboBox, etc.) anzuzeigen.
ToString
|
AW: TListbox füllen und abfragen
ich danke dir
|
AW: TListbox füllen und abfragen
ähm, ich kapiere immer noch nicht ganz :-(
in deinem Beispiel existiert die function "ToString" in der Klasse TPerson. Beim Füllen des Controlls benutzt du diese Funktion aus der ObjectListe. Steh ich jetzt soo aufm Schlauch ? Gruss KH |
AW: TListbox füllen und abfragen
Für solche Zwecke wurde diese Methode in TObject eingeführt, standardmässig wird nur der Klassennamen ausgegeben. Wenn Du aber Deine Klassen so anpasst, dass hier was sinnvolles zurückgegeben wird, kannst du das für Deine Zwecke verwenden.
|
AW: TListbox füllen und abfragen
ok, ich danke dir
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 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