![]() |
TObjectList und TListBox
Hallo,
ich habe folgende Fragestellung: In meinem Programm speichere ich die Daten (MyObjt) in einer von TObjectList abgeleteten Klasse MyObjtLst. Zum Auswählen einzelner Objekte dieser Liste und zum Umsortieren, Löschen und Hinzufügen von Objekten will ich eine ListBox (MyListBox) verwendet. Bisher hatte ich keine andere Idee als beim Anzeigen des Fensters zur Dateneingabe alle Enträge der ObjektListe an die ListBox zu übergeben:
Delphi-Quellcode:
und beim Schliessen des Fenster wieder zurückzuspeichern:
procedure TDataDlg.FormShow(Sender: TObject);
var i:Integer; begin MyListBox.Clear; for i:=0 to MyObjtLst.Count-1 do MyListBox.AddItem(MyObjtLst[i].Name,MyObjtLst[i]); MyObjtLst.OwnsObjects:=False; end;
Delphi-Quellcode:
Aber ist diese hin und her zwischen den Listen nicht etwas zu umsrändlich?
procedure TDataDlg.FormClose(Sender: TObject; var Action: TCloseAction);
var i:Integer; MyObjt : TMyObjt; begin MyObjtLst.Clear; for i:=0 to MyListBox.Items.Count-1 do begin MyObjt:=MyListBox.Items.Objects[i] as TMyObjt; MyObjtLst.Add(MyObjt); end; MyObjtLst.OwnsObjects:=True; end; Gibt es eine einfachere bzw. bessere Lösung? |
AW: TObjectList und TListBox
Am Besten den virtuellen Modus verwenden.
|
AW: TObjectList und TListBox
Danke für die Antwort, aber ich muss gestehen:
Das sagt mir gar nichts! |
AW: TObjectList und TListBox
Schaust du hier:
![]() |
AW: TObjectList und TListBox
Virtuell bedeutet, dass die Daten nicht in der Komponente gespeichert werden, sondern dass diese die Daten per Event anfordert.
Setze die Eigenschaft Style auf libVirtual. Die Daten für die Anzeige, werden dann über den Data-Event angefordert. (onData) |
AW: TObjectList und TListBox
Danke!!
Das schaut gut aus!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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