Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TObjectList und TListBox (https://www.delphipraxis.net/208495-tobjectlist-und-tlistbox.html)

SteffenSchm 5. Aug 2021 15:02

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:
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;
und beim Schliessen des Fenster wieder zurückzuspeichern:
Delphi-Quellcode:
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;
Aber ist diese hin und her zwischen den Listen nicht etwas zu umsrändlich?
Gibt es eine einfachere bzw. bessere Lösung?

mkinzler 5. Aug 2021 15:09

AW: TObjectList und TListBox
 
Am Besten den virtuellen Modus verwenden.

SteffenSchm 5. Aug 2021 15:13

AW: TObjectList und TListBox
 
Danke für die Antwort, aber ich muss gestehen:
Das sagt mir gar nichts!

Uwe Raabe 5. Aug 2021 15:16

AW: TObjectList und TListBox
 
Schaust du hier: http://docwiki.embarcadero.com/Libra....TListBoxStyle

mkinzler 5. Aug 2021 15:21

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)

SteffenSchm 5. Aug 2021 15:36

AW: TObjectList und TListBox
 
Danke!!

Das schaut gut aus!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz