Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "Polymorphe Properties"? (https://www.delphipraxis.net/188768-polymorphe-properties.html)

Zacherl 5. Apr 2016 21:18

Delphi-Version: XE3

"Polymorphe Properties"?
 
Hallo zusammen,

ich erinnere mich bei einigen Fremdkomponenten schonmal so etwas wie polymorphe Properties gesehen zu haben. Da ich nicht genau weiß, wie der Fachbegriff dafür ist, versuche ich es mal zu beschreiben:

Die einzelnen Segmente einer StatusBar hatten eine Eigenschaft - nennen wir sie mal PanelType. Der Objektinspektor zeigte mir dazu in einem Dropdown Menü verschiedene Auswahlmöglichkeiten, wie z.b. TextPanel, ToolbarPanel, und so weiter an. Soweit nichts Besonderes (könnte man ja einfach über ein Enum realisieren), allerdings sah es im OI so aus, als steckte hinter diesen Möglichkeiten jeweils ein (polymorphes) Objekt. Sprich: Ich konnte die Eigenschaft "aufklappen" und je nach Wahl erhielt ich entsprechend sinnvolle Sub-Properties. Das TextPanel erlaubt mir eine Caption zu setzen, beim ToolbarPanel kann ich ein Toolbar Objekt auswählen, was angedockt werden soll, etc.

Weiß jemand, wie man diese speziellen Properties nennt und wie sowas implementiert wird?

Viele Grüße
Zacherl

Neutral General 6. Apr 2016 08:06

AW: "Polymorphe Properties"?
 
Die Property ist wahrscheinlich einfach vom Typ der Basisklasse all dieser Typen und die ComboBox ist über einen eigenen Propertyeditor gemacht.

Uwe Raabe 6. Apr 2016 08:48

AW: "Polymorphe Properties"?
 
Das ist eigentlich das Standard-Verhalten des OI bei abgeleiteten Klassen. Ich kann das hier ganz leicht mit einem VCL-Form, einem TButton, einer TImageList und einer TPngImageList reproduzieren. Das Images-Property des TButton ist vom Typ TCustomImageList. Je nachdem, welche der ImageLists ich diesem Proeprty zuweise, werden die jeweiligen (auch unterschiedlichen) Eigenschaften der ImageList-Klasse im OI angezeigt.

Die OI-ComboBox zeigt auch alle Instanzen an, die von der Basisklasse (hier TCustomImageList) abgeleitet sind.

Ein ähnliches Beispiel lässt sich auch einfach mit einer TDataSource und unterschiedlichen TDataSet-Instanzen aufbauen.

Zacherl 6. Apr 2016 11:01

AW: "Polymorphe Properties"?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1334752)
Das ist eigentlich das Standard-Verhalten des OI bei abgeleiteten Klassen.

Jaa, für TComponent Properties ist das zutreffend. Aber ich möchte nicht, dass man eine auf dem Formular vorhandene Komponente auswählen kann. Es sollen nur ganz bestimmte Objekte verfügbar sein und zwar für jede Instanz der Haupt-Komponente jeweils Eigene. TextPanel biegt das zugeordnete Objekt beispielsweise auf
Delphi-Quellcode:
MyBarPanel1.FTextPanelProperties
um, ToolbarPanel entsprechend auf
Delphi-Quellcode:
MyBarPanel1.FToolbarPanelProperties
, etc.

Zitat:

Zitat von Neutral General (Beitrag 1334742)
Die Property ist wahrscheinlich einfach vom Typ der Basisklasse all dieser Typen und die ComboBox ist über einen eigenen Propertyeditor gemacht.

Das wird es wohl sein .. eine
Delphi-Quellcode:
TClassProperty
mit spezialisiertem PropertyEditor :thumb: Muss ich mich mal einlesen in die Materie.


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