Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Komponenten -- Eigenschaften entfernen (https://www.delphipraxis.net/211112-komponenten-eigenschaften-entfernen.html)

max.08 29. Jul 2022 16:13

Komponenten -- Eigenschaften entfernen
 
Hallo zusammen,

ich bin gerade dabei eine Komponente zu schreiben.
Gibt es eine Möglichkeit eine geerbte Eigenschaft aus dem OI zu entfernen oder zu verstecken?
Ich möchte das die Eigenschaft Brush.Color eines TShapes nicht im OI angezeigt wird.

vielen Dank für evl. Antworten
Max

Incocnito 29. Jul 2022 16:20

AW: Komponenten -- Eigenschaften entfernen
 
Weiß ich gerade nicht sicher, aber vielleicht reicht es schon das property in den private-Bereich zu schieben.
Wenigstens mal probieren. ;-)

dummzeuch 29. Jul 2022 16:44

AW: Komponenten -- Eigenschaften entfernen
 
Wenn ich mich recht erinnnere gab es da einen Trick, dass man "irgendwas" auf NIL setzen musste....

Hm, vielleicht mittels RegisterPropertyEditor einen NIL-Property Editor für die Komponente, den Property-Namen und den Datentyp setzen?

Delphi-Quellcode:
RegisterPropertyEditor(TypeInfo(PropertyTyp), TMyComponent, PropertyName, NIL);


Mein Gedächtnis war auch schon mal besser (und StackOverflow ist down(!)).

Eine andere Möglichkeit wäre ein Property-Editor für die Komponente, die nur die gewünschten Properties published. Beispiel von Attila:

https://web.archive.org/web/20161125...94662#10194662

via a post from Jeroen in 2017:
https://wiert.me/2017/11/16/hi-how-t...om-components/

himitsu 29. Jul 2022 16:47

AW: Komponenten -- Eigenschaften entfernen
 
nil: richtig erinnert

aber ich bin mir nicht sicher, ob es dort (RegisterPropertyEditor) war.


Diesen Trick "etwas auf nil setzen", gab es dafür, um ein Property unsichtbar zu machen, so dass es m OI nicht mehr angezeigt wird (kein Editor = keine Anzeige),

aber sowas gab es auch, um einen "eigenen" Property-Editor zu entfernen und wieder den Standardeditor anzuzeigen. :gruebel:



Ich glaube Erstes war hier richtig, also würde passen.


Die Auswahl kann man hier weniger einschränken.
Zitat:

RegisterPropertyEditor(nil, TBrush, 'Color', NIL);
Name und Klasse wären schon eindeutig und der Typ ist nicht mehr unbedingt nötig. (falsch wäre es damit aber auch nicht)


Aber es würde so oder so "alle" TBrush erwischen, von anderen Komponenten.
Wie gerade nachfogend es jemand erklärte, wird das so also doch nichts.

Du müsstest deine komponente ableiten,
auch TBrush ableiten und dann in deiner Komponente deinen TMyBrush haben, in welchem das Color nicht published ist, bzw. wo der PropertyEditor entfernt wird.

Was aber geht, ist das ganze Brush auszublenden (nicht published, bzw. kein PropertyEditor) oder es auf
Delphi-Quellcode:
stored False
zu setzen
und dafür dann eigene Property, als Weiterleitung zu den Eigenschaften des Brush, welche du speichern willst.


[edit]
Ja, natürlich wäre es einfacher, das Property garnicht erst in der Klasse zu haben. (nicht "published", siehe nachfolgend)

Bernhard Geyer 29. Jul 2022 16:53

AW: Komponenten -- Eigenschaften entfernen
 
Zitat:

Gibt es eine Möglichkeit eine geerbte Eigenschaft aus dem OI zu entfernen oder zu verstecken?
Für Viele Controls gibt es ein TCustomxxx als Basisklasse, welche man für sowas nimmt, da hier fast keine Properties published sind

Zitat:

Ich möchte das die Eigenschaft Brush.Color eines TShapes nicht im OI angezeigt wird.
Das wird so nicht gehen, da du hier das Property eines Propertys verstecken willst.
Das wird um einiges Aufwändiger das hin zu bekommen.

max.08 30. Jul 2022 09:07

AW: Komponenten -- Eigenschaften entfernen
 
Das ist Schade. Ich dachte das es einfacher ist.
Trotzdem Danke.
Max


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