AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sichtbarkeit von Eigenschaften verringern

Ein Thema von Codehunter · begonnen am 21. Apr 2015 · letzter Beitrag vom 21. Apr 2015
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Sichtbarkeit von Eigenschaften verringern

  Alt 21. Apr 2015, 10:45
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
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von FaTaLGuiLLoTiNe
FaTaLGuiLLoTiNe

Registriert seit: 3. Jul 2004
Ort: NRW
55 Beiträge
 
Delphi XE Enterprise
 
#2

AW: Sichtbarkeit von Eigenschaften verringern

  Alt 21. Apr 2015, 11:15
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.
Das würde mich ehrlich gesagt sehr wundern, weil das eines der Grundprinzipien objektorientierter Entwicklung ad absurdum führen würde. Jede abgeleitete Klasse muss mindestens die Schnittstelle ihrer Superklasse nach aussen hin anbieten, da sonst die Polymorphie nicht mehr gegeben ist.
Christian
<< FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Sichtbarkeit von Eigenschaften verringern

  Alt 21. Apr 2015, 12:45
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Sichtbarkeit von Eigenschaften verringern

  Alt 21. Apr 2015, 12:59
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 veröffentlicht.

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.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Sichtbarkeit von Eigenschaften verringern

  Alt 21. Apr 2015, 13:19
Sichtbarkeit von published zurück auf protected gezwungen und tatsächlich nicht mehr in der IDE angezeigt wurde
Falls Unterdrücken in der IDE das Ausblenden im Objektinspektor meint: dafür gibt es UnlistPublishedProperty.
Zum Beispiel:

UnlistPublishedProperty(TImageEnListView , 'LargeImages');

Artikel auf Stackoverflow: Hide a property from object inspector in delphi
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#6

AW: Sichtbarkeit von Eigenschaften verringern

  Alt 21. Apr 2015, 13:24
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.
Was passiert dann/soll passieren, wenn ich auf TControl zurück-'caste' und dann auf Hint normal zugreife?
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Sichtbarkeit von Eigenschaften verringern

  Alt 21. Apr 2015, 13:36
Methoden können in der Sichtbarkeit herabgesetzt werden.

http://docs.embarcadero.com/products...rride_xml.html
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Sichtbarkeit von Eigenschaften verringern

  Alt 21. Apr 2015, 13:45
Methoden können in der Sichtbarkeit herabgesetzt werden.

http://docs.embarcadero.com/products...rride_xml.html
Dir ist bestimmt aufgefallen, da dieses eine "Fehlermeldung" des Compilers ist.

Also ja, man kann es machen, aber man darf sollte es nicht machen, drum meckert auch der Compiler.



In diesem Fall würde ich ein stored False und das Ausblenden im IO vorschlagen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Apr 2015 um 13:47 Uhr)
  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 15:29 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