![]() |
Properties bei Ableitung verschieben
Moin,
kann ich beim Ableiten einer Komponente (zum Beispiel TEdit) in der Ableitung Sachen vom Published in den Public Bereich verschieben, ohne die Ursprungskomponente anzufassen? Und falls es geht, wie? Ich möchte ein eigenes Edit implementieren, das nicht nur neue Funktionen beherrscht, sondern auch für meine Zwecke aufgeräumter ist. Dafür möchte ich gerne alles aus dem Objektinspektor verbannen, was ich ohnehin nie benutze. Zur Not kann man es ja immer noch per Code ändern oder wieder aufnehmen. Liebe Grüße |
AW: Properties bei Ableitung verschieben
Oder du leitest von TCustomEdit aus Vcl.StdCtrls ab und published nur das, was du möchtest.
|
AW: Properties bei Ableitung verschieben
Exakt, genau so handhabt die VCL das intern auch.
|
AW: Properties bei Ableitung verschieben
Man kann bei Vererbung die Sichtbarkeit von Eigenschaften nur erweitern, nicht beschränken.
|
AW: Properties bei Ableitung verschieben
Deshalb ja der Trick, in den TCustomXXX-Klassen sind die meisten Properties protected deklariert, die Ableitungen implementieren oft gar keine oder nur wenige weitere Funktionalitäten, erhöhen aber die Sichtbarkeit der für sinnvoll erachteten Properties.
|
AW: Properties bei Ableitung verschieben
Zitat:
Ich habe auch schon mal methoden in kindklassen überschrieben die dann weniger sichtbar waren. Nur: der Compiler warnt immer davor und da es sowieso ausversehen war hab' ich das dann auch gleich geändert. Zumindest bei Methoden geht es also. |
AW: Properties bei Ableitung verschieben
Dann dürfte das hier aber nicht funktionieren:
Delphi-Quellcode:
type
TParent = class public procedure TuWas; virtual; end; TChild = class(TParent) strict private procedure TuWas; override; end; { TParent } procedure TParent.TuWas; begin ShowMessage('Parent'); end; { TChild } procedure TChild.TuWas; begin ShowMessage('Child'); end; procedure TFormTest.ButtonTestClick(Sender: TObject); var test: TChild; begin test := TChild.Create; try test.TuWas; finally test.Free; end; end; |
AW: Properties bei Ableitung verschieben
Bei manchen Eigenschaften kannst du die Sichtbarkeit verringern.
Delphi-Quellcode:
type
TMyControl = class(TCustomPanel) protected // Ist nicht mehr im Object-Inspector zu sehen: property ParentFont; // Ist weiterhin im Object-Inspector zu sehen: property Left; end; |
AW: Properties bei Ableitung verschieben
Zitat:
-
Delphi-Quellcode:
ist
TCustomPanel.ParentFont
Delphi-Quellcode:
(deklariert in
protected
Delphi-Quellcode:
)
TControl.ParentFont
-
Delphi-Quellcode:
ist
TCustomPanel.Left
Delphi-Quellcode:
(deklariert in
published
Delphi-Quellcode:
)
TControl.Left
Das wundert mich also nicht und damit stimmt die Aussage weiterhin, dass man die Sichtbarkeit nicht verringern kann. |
AW: Properties bei Ableitung verschieben
Zitat:
Delphi-Quellcode:
type
TMyControl = class(TPanel) protected // Ist nicht mehr im Object-Inspector zu sehen: property ParentFont; // Ist weiterhin im Object-Inspector zu sehen: property Left; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz