Sichtbarkeits von properties ändern

Rund um die LCL und andere Komponenten
Antworten
braunbär
Beiträge: 289
Registriert: Do 8. Jun 2017, 18:21

Sichtbarkeits von properties ändern

Beitrag von braunbär »

Gibt es eine Möglichkeit, in einer abgeleiteten Klasse die Sichtbarkeit einer Property herabzusetzen, d.h. eine property, die man nicht braucht, von published auf irgend was anderes herabzusetzen, sodass sie nicht überflüssigerweise im OI angezeigt wird?

wp_xyz
Beiträge: 3251
Registriert: Fr 8. Apr 2011, 09:01

Re: Sichtbarkeits von properties ändern

Beitrag von wp_xyz »

Du musst für das/die (?) Property den THiddenPropertyEditor registrieren: http://wiki.freepascal.org/Extending_th ... _Inspector

Warf
Beiträge: 1424
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Sichtbarkeits von properties ändern

Beitrag von Warf »

Klasse ableiten und nur die gewünschten properties publishen

Code: Alles auswählen

Tsuperclass =class(TControl)
...
Published
  Property p1: Type read ... write ...;
  Property p2: Type read ... write ...;
End
 
TSubClass = class(TSuperClass)
Published
  Property p1;
End;


Sollte dann nur noch p1 angezeigt werden

wp_xyz
Beiträge: 3251
Registriert: Fr 8. Apr 2011, 09:01

Re: Sichtbarkeits von properties ändern

Beitrag von wp_xyz »

Nein, denn dann würdest du die anderen "published" Properties auf "public" zurückstufen. Die Sichtbarkeit von Properties kann man aber nicht verringern.

Warf
Beiträge: 1424
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Sichtbarkeits von properties ändern

Beitrag von Warf »

wp_xyz hat geschrieben:Nein, denn dann würdest du die anderen "published" Properties auf "public" zurückstufen. Die Sichtbarkeit von Properties kann man aber nicht verringern.

Ich weiß nicht genau was du meinst, ich mach das so schon seit Jahren und es funktioniert

wp_xyz
Beiträge: 3251
Registriert: Fr 8. Apr 2011, 09:01

Re: Sichtbarkeits von properties ändern

Beitrag von wp_xyz »

Das beigefügte Package enthält ein "TTextOnlyEdit", also ein TEdit, bei dem nur die Eigenschaft "Text" published ist. Wenn du das Package installierst und seo ein TTextOnlyEdit aufs Formular klickst, erscheinen im Object Inspector trotzdem alle anderen von TEdit geerbten Eigenschaften.
Dateianhänge
unpublish_properties.zip
(1.13 KiB) 22-mal heruntergeladen

Warf
Beiträge: 1424
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Sichtbarkeits von properties ändern

Beitrag von Warf »

wp_xyz hat geschrieben:Das beigefügte Package enthält ein "TTextOnlyEdit", also ein TEdit, bei dem nur die Eigenschaft "Text" published ist. Wenn du das Package installierst und seo ein TTextOnlyEdit aufs Formular klickst, erscheinen im Object Inspector trotzdem alle anderen von TEdit geerbten Eigenschaften.


Ich schau mir das irgendwann mal an (bin grad im Urlaub und hab nur das Handy) aber zumindest bei Lazarus 1.6.4 hab ich das so verwendet und es hat funktioniert (damals hatte ich den properly Editor für ein eigenes Projekt gebraucht und wollte nicht alles anzeigen)

braunbär
Beiträge: 289
Registriert: Do 8. Jun 2017, 18:21

Re: Sichtbarkeits von properties ändern

Beitrag von braunbär »

wp_xyz hat da natürlich Recht, wenn du in einer abgeleiteten Klasse eine Property , die in der übergeordneten Klasse published ist, nicht anführst, dann bleibt sie natürlich trotzdem published. Schön wäre es, wenn man so eine Property genauso auf protected herunterstufen könnte, wie man sie auf published hinaufstufen kann, aber das geht offenbar leider nicht.

Ich haba mir den Link zum THiddenPropertyEditor kurz angeschaut, und wenn ich Zeit und Muße habe, spiele ich mich damit. Momentan raufe ich leider mit schwerwiegenderen und dringlicheren Problemen (siehe im anderen Thread).

Antworten