![]() |
Sichtbarkeit von Eigenschaften verringern
Hallo!
Ich weiß das Thema wurde früher schon kontrovers diskutiert: Kann man eine published-Property einer Vorfahrklasse in seiner abgeleiteten Klasse wieder auf protected setzen? Der Hintergrund ist folgender: Ich möchte die Anzeige von Hints über ein Event wie z.B. "OnGetHintText" realisieren. Dadurch wird die published-Eigenschaft "Hint" überflüssig. Da aber diese Eigenschaft bereits in TControl published ist kann ich ja schlecht noch eine Ebene tiefer ansetzen und dort ableiten, wenn ich TWinControl-Fähigkeiten brauche. Ich meine dass es in den neueren Delphis eine Möglichkeit gab, die Sichtbarkeit wieder zu verringern. Im Prinzip sowas wie "reintroduce", nur eben für Properties. Grüße Cody |
AW: Sichtbarkeit von Eigenschaften verringern
Zitat:
|
AW: Sichtbarkeit von Eigenschaften verringern
Jupp, man kann nichts verstecken, was in einem Vorfahren sichtbar ist.
Vererbung erweitert immer nur und entfernt nichts. Lösung: Entweder du lebst mit Hint und wirfst notfalls, bei Zuweisung, eine Exception, oder du gehst den korrekten Weg und erbst von einem Vorfahren, wo das noch nicht sichtbar ist. Aus diesem Grunde gibt es von ordentlich Komponenten entsprechende Custom-Vorfahren und der eigentliche Typ ändert nur noch die Sichtbarkeiten. z.B. TEdit und TCustomEdit |
AW: Sichtbarkeit von Eigenschaften verringern
Wie gesagt, das ist ja schon in TControl published. Macht wenig Sinn bei TComponent anzusetzen und quasi den ganzen Erbenbaum bis zu TWinControl hin nochmal zu coden, nur damit man das Hint los wird.
Ich lasse das jetzt erstmal so stehen. Habe VBC 1.0.5 soeben mit Hint ![]() Trotzdem bin ich der Meinung, ich habe schon mal irgendwo einen Fall gesehen, wo die Sichtbarkeit von published zurück auf protected gezwungen und tatsächlich nicht mehr in der IDE angezeigt wurde. Das war eine Kombination aus zwei nachgelagerten Keywords hinter der protected-Property-Deklaration. Eins zwang die Sichtbarkeit nach unten, das andere unterdrückte die Compilerwarnung. Aber beim besten Willen, ich wiss nicht mehr wo und wie. |
AW: Sichtbarkeit von Eigenschaften verringern
Zitat:
Zum Beispiel:
Delphi-Quellcode:
UnlistPublishedProperty(TImageEnListView , 'LargeImages');
Artikel auf Stackoverflow: ![]() |
AW: Sichtbarkeit von Eigenschaften verringern
Zitat:
|
AW: Sichtbarkeit von Eigenschaften verringern
Methoden können in der Sichtbarkeit herabgesetzt werden.
![]() |
AW: Sichtbarkeit von Eigenschaften verringern
Zitat:
Also ja, man kann es machen, aber man darf sollte es nicht machen, drum meckert auch der Compiler. :roll: In diesem Fall würde ich ein
Delphi-Quellcode:
und das Ausblenden im IO vorschlagen.
stored False
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 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