AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Komponenten -- Eigenschaften entfernen
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten -- Eigenschaften entfernen

Ein Thema von max.08 · begonnen am 29. Jul 2022 · letzter Beitrag vom 30. Jul 2022
Antwort Antwort
max.08

Registriert seit: 17. Apr 2017
33 Beiträge
 
Delphi 10.3 Rio
 
#1

Komponenten -- Eigenschaften entfernen

  Alt 29. Jul 2022, 16:13
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
  Mit Zitat antworten Zitat
Incocnito

Registriert seit: 28. Nov 2016
210 Beiträge
 
#2

AW: Komponenten -- Eigenschaften entfernen

  Alt 29. Jul 2022, 16:20
Weiß ich gerade nicht sicher, aber vielleicht reicht es schon das property in den private-Bereich zu schieben.
Wenigstens mal probieren.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.468 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Komponenten -- Eigenschaften entfernen

  Alt 29. Jul 2022, 16:44
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?

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/
Thomas Mueller

Geändert von dummzeuch (29. Jul 2022 um 16:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#4

AW: Komponenten -- Eigenschaften entfernen

  Alt 29. Jul 2022, 16:47
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.



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 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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Jul 2022 um 17:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Komponenten -- Eigenschaften entfernen

  Alt 29. Jul 2022, 16:53
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
max.08

Registriert seit: 17. Apr 2017
33 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Komponenten -- Eigenschaften entfernen

  Alt 30. Jul 2022, 09:07
Das ist Schade. Ich dachte das es einfacher ist.
Trotzdem Danke.
Max
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 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