Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Zugriff auf Objekt in TObjectList

  Alt 9. Dez 2019, 21:36
Hallo Zusammen,

vielen Dank für die vielen guten Anregungen. Ich habe zuvor noch nie mit einer TObjectList gearbeitet und habe daher davon keine wirkliche Ahnung.

Ich habe gerade versucht Generics.Collections in meine uses einzufügen. Ich habe noch nicht erwähnt, dass ich das Projekt gerade als Web-Application mit TMS-WebCore umsetzen möchte. Da scheinen die Generics.Collections nicht unterstützt zu werden. Der Compiler meckert:
Zitat:
[Fehler] TDesignUnit.pas(5): can't find unit "Generics.Collections"
Der Gedanke war folgender:
Ich schreibe ein Programm, dass auf unterschiedlichen Forms immer wieder diese Art von Buttons haben wird (TTMSFNCToolBarButton) Ich möchte die Captions aus einer DB-Tabelle befüllen. Dazu möchte ich in der Design-klasse, eine eigene Unit, eine Procedure schreiben, der ich bei Bedarf diese Buttons übergebe, das entsprechende Design vornehme (hier gerade nur das Caption, später aber auch noch andere Einstellungen) und dann die Liste wieder freigebe.

Delphi-Quellcode:
procedure TDesign.Design_LogIn;
var
   BList: TObjectList<TTMSFNCToolBarButton>; // Ist das generisch? Das akzeptiert der Compiler nicht...
begin
   BList:= TOBjectList.Create;
   Try
      BList.Add(Form_LogIn.btn_login_abbruch);
      BList.Add(Form_LogIn.btn_login_ok);
      Labeling_GlowButtons(BList); //Wenn hier die Design-Arbeiten abgeschlossen sind, brauche ich die Liste nicht mehr.
   Finally
      BList:= nil; // Wenn ich free genommen habe, waren die Buttons zur Laufzeit von dem Form entfernt...
   End;
end;
Was bewirkt BList.OwnsObjects:= False ? Ziehe die Frage zurück...
Zitat:
OwnsObjects gets or sets whether objects in the list are owned by the list or not. If entries are owned, when an entry object is removed from the list, the entry object is freed. Create initializes this property.
Was mache ich bei der Nutzung einer TObjectList falsch?

Wie löst man denn so eine Aufgabe elleganter?

Vielen Dank für Eure Unterstützung!
Patrick
Patrick

Geändert von Ykcim ( 9. Dez 2019 um 21:50 Uhr)
  Mit Zitat antworten Zitat