Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eigenschaft eines Ahnen im Erben verstecken - geht das? (https://www.delphipraxis.net/109779-eigenschaft-eines-ahnen-im-erben-verstecken-geht-das.html)

HeikoAdams 7. Mär 2008 13:30


Eigenschaft eines Ahnen im Erben verstecken - geht das?
 
Hallo,
ich habe folgendes Problem:
Ich haben mir eine eigene Komponente von TDbEdit abgeleitet, um mir ein DbPassword-Edit zu erstellen, dass das Standardzeichen von Windows für Passwörter (Sternchen oder schwarzer Punkt) verwendet.
Jetzt möchte ich noch irgendwie die Eigenschaft PasswordChar des TDbEdits irgendwie verschwinden lassen oder zumindest unbrauchbar machen, hab aber keine Idee, wie ich das am besten bewerkstelligen kann. :wiejetzt:

Gruß

Heiko

Luckie 7. Mär 2008 13:42

Re: Eigenschaft eines Ahnen im Erben verstecken - geht das?
 
Man kann Sichtbarkeiten erhöhen, aber nicht verringern.

HeikoAdams 7. Mär 2008 13:46

Re: Eigenschaft eines Ahnen im Erben verstecken - geht das?
 
Diese Antwort habe ich befürchtet. Dann werde ich mir wohl was einfallen lassen müssen, um die Property unbrauchbar zu machen :coder2:

NormanNG 7. Mär 2008 13:51

Re: Eigenschaft eines Ahnen im Erben verstecken - geht das?
 
Hi,

Zitat:

Man kann Sichtbarkeiten erhöhen, aber nicht verringern.
Ist das sicher? Ich dachte immer, das hier geht und "versteckt" die property "test"?

Delphi-Quellcode:
type
  tTest1 = class
  private
    fTest : String;
  protected
  public
    property test : string read ftest;
  end;

  tTest2 = class(tTest1)
  private
    property Test;
  protected
  public
  end;
Immer wenn tTest2 verwendet wird, gibt es keinen Zugriff auf tTest2.Test (außerhalb der Unit)?

sakura 7. Mär 2008 13:54

Re: Eigenschaft eines Ahnen im Erben verstecken - geht das?
 
Mit einem Cast auf die Vorgängerklasse kann man dann aber wieder wie eh und je auf die Property zugreifen. Des Weiteren meckert der Compiler immer rum, dass die Sichtbarkeit verringert wurde.

...:cat:...

NormanNG 7. Mär 2008 14:05

Re: Eigenschaft eines Ahnen im Erben verstecken - geht das?
 
Zitat:

Mit einem Cast auf die Vorgängerklasse kann man dann aber wieder wie eh und je auf die Property zugreifen.
Das trifft ja aber immer zu und hat nicht mit diesem Einwand zu tun:

Zitat:

Man kann Sichtbarkeiten erhöhen, aber nicht verringern.
Wenn er die property "verstecken" will, kann er das tun.

HeikoAdams 7. Mär 2008 14:15

Re: Eigenschaft eines Ahnen im Erben verstecken - geht das?
 
Hmm ... die Property PasswordChar ist um Ahnen als Protected deklariert. Füge ich meine Deklaration unter Private ein, meckert der Compiler
Zitat:

[Pascal Hinweis] DBPasswordEdit.pas(11): H2219 Das private-Symbol 'PasswordChar' wurde deklariert, aber nie verwendet
und die Property ist im Objektinspektor nach wie vor sichtbar. :wall:

Edit: Zitat aus der Delphi-Hilfe:
Zitat:

... So kann beispielsweise eine protected-Eigenschaft in einer abgeleiteten Klasse als public deklariert werden, nicht aber als private. ...
Sieht so aus, als hätte ich keine Chance, diese Property los zu werden, ohne in der Ahnen-Hierarchie herum zu basteln :cry:

Gruß

Heiko

Jelly 7. Mär 2008 15:12

Re: Eigenschaft eines Ahnen im Erben verstecken - geht das?
 
Du kannst alternativ in der Vaterklasse die Getter und Setter Methoden anpassen. Prüfe den Typ der Instanz, und falls der anders ist als den der Vaterklasse, dann schmeiss eine Exception.

Kroko1999 7. Mär 2008 15:26

Re: Eigenschaft eines Ahnen im Erben verstecken - geht das?
 
oder Du überschreibst die Property mit Getter und Setter und läßt diese ins Leere laufen!

SirThornberry 7. Mär 2008 15:52

Re: Eigenschaft eines Ahnen im Erben verstecken - geht das?
 
dann doch lieber eine exception damit man sich nicht später wundert warum etwas anderes als erwartet passiert. Wenn eine Exception fliegt weiß man wenigstens sofort was los ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:23 Uhr.
Seite 1 von 2  1 2      

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