Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   PropertyEditor für TObjectList? (https://www.delphipraxis.net/191666-propertyeditor-fuer-tobjectlist.html)

sintronic86 8. Feb 2017 12:12

PropertyEditor für TObjectList?
 
Hallo an alle Profis da draußen,

wieder einmal stehe ich vor einem (für mich) unlösbarem Problem.
Ich habe in den letzten 3 Tagen schon etliche Foren durchsucht und gefühlte 3.000.000 Code-Beispiele ausprobiert ohne nennenswerte Erfolge.

Zu meinem Problem:
Ich habe eine eigene Komponente erstellt (FMX), welche eine Art Button darstellt.
Nun möchte ich diesem eine Art Level-System beibringen, so dass ich praktisch einem Button ("A") mehrere Buttons("B", "C", "D") zuordnen kann, welche dann quasi ein Level tiefer liegen und zu "A" gehören.
Um die zusätzlichen Buttons mitführen zu können, benutze ich derzeit eine TObjectList<TMeinButton>. Dieses System funktioniert auch einwandfrei.

Delphi-Quellcode:
type
  TMeinButton = class(TControl)
    private
      FButtons: TObjectList<TMeinButton>;
    public
      property Buttons: TObjectList<TMeinButton> read FButtons
  end;

Was nicht geht: Das Bearbeiten der Buttons zur Designzeit. Ich möchte gerne im ObjectInspector die (Unter)-Buttons editieren können und diese sollen dann auch in die *.fmx-Datei gespeichert werden.
Bisher versucht habe ich einiges mit TCollection. Aber hier bin ich immer wieder gescheitert.

Gibt es nicht die Möglichkeit für die TObjectList einen eigenen PropertyEditor zu schreiben, in dem ich die entsprechenden Lade- bzw. Speicher-Funktionen selbst definieren kann? Leider habe ich zu diesem Weg keine "sinnvollen", bzw. verständlichen Beispiele bei Dr.Google finden können!

mjustin 8. Feb 2017 12:17

AW: PropertyEditor für TObjectList?
 
Für die Listenverwaltung innerhalb von Komponenten gibt es spezielle VCL Klassen - TCollectionItem und TCollection. Diese werden vom Designer unterstützt.

himitsu 8. Feb 2017 13:18

AW: PropertyEditor für TObjectList?
 
Jupp, es gibt einen Standard-Property-Editor für TCollection und deine Objekte müssen dann nur von TCollectionItem erben.
PS: Es muß dort zwingend ein Setter definiert werden, da sonst nicht gespeichert wird.
Viele Andere und ich habeb diesen Setter aber meistens als "Assign" deklariert.
Delphi-Quellcode:
type
  TMeinButton = class(TControl)
    private
      FButtons: TMyList;
      procedure AssignButtons(const List: TMyList); // hier drin wird FButtons geleert (Clear) und dann die Items der Liste umkopiert
    public
      property Buttons: TMyList read FButtons write AssignButtons;
  end;

Ansonsten wirst du dir selber einen eigenen Property-Editor (OTA) bauen müssen, wenn du nicht TCollection verwenden magst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 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