Announcement

Collapse
No announcement yet.

Sichtbarkeit einer Komponente: Eigenschaft von public auf private ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sichtbarkeit einer Komponente: Eigenschaft von public auf private ?

    Hallihallo...

    Ich habe folgende Aufgabe bekommen:

    - ich soll eine Komponente ableiten (urspruenglich eine in VB entwickelte ActiveX-Komponente), deren Quelltext ich nicht habe... sondern nur die Schnittstelle...

    - in dieser Komponente ist eine Art Balkendiagramm integriert und zu jedem dieser Balken gibt es eine LongInt- Eigenschaft BarData, die als public definiert worden ist

    - ich muss eben diese property nun Zweck entfremden, in dem ich einen Pointer auf eine beliebige Struktur darin speichere... bis dato kein Problem...

    musste allerdings andere Funktionen als eigenschaftenbezogene Get-/SetBarData verwenden. Kriege den Pointer wunderbar untergebracht... und kann damit arbeiten... allerdings ergibt sich ein grosses Problem, wenn jemand direkt auf BarData zugreifen will und nicht meine Funktionen dafuer verwendet...

    deswegen muss ich die property BarData von public auf private umdefinieren, da ich sie ja intern dringend brauche, aber von extern nicht darauf zugreifen koennen darf...

    allerdings wenn ich einfach den Eintrag

    private
    property BarData;
    ...

    setze, ist diese Eigenschaft nach wie vor sichtbar... in den wenigen Quellen, die ich habe, wird sich glorreich darueber ausgeschwiegen bzw. allenfalls gesagt, dass man die Sichtbarkeit erhoehen kann (also private nach public)... aber eben nicht umgekehrt...

    mit der bitte um rasche Hilfe
    Aleister
    Zuletzt editiert von aleister crowley; 22.09.2008, 11:10.

  • #2
    Richtig, einmal public immer public. Du kannst aber viel besser vorgehen:

    <pre>
    type
    TMyComp = class(TBaseComp)
    private
    function GetBarData: Pointer;
    procedure SetBarData(Value: Pointer);
    public
    property BarData: Pointer read GetBarData write SetBarData;
    end;

    </pre>

    So, nun hast du alle Möglichkeiten. Eine readonly property die KEINE write Methode definiert. Oder eine geschwindelte property die die Daten garnicht inherited BarData; abspeichert sondern dafür ein eigenes Member benutzt. Nur du, intern kannst dann noch auf inherited BarData zugreifen.

    Gruß Hage

    Comment


    • #3
      Ich danke dir... hatte die Idee auch schon mal gehabt... hatte sie aber fuer als nicht realisierbar verworfen...

      hatte naemlich irgendwie die parameter in einer konfusen anordnung... *gg* hatte deswegen nicht geklappt...

      aber so laeuft es hervorragend...

      Aleister
      Zuletzt editiert von aleister crowley; 22.09.2008, 11:10.

      Comment

      Working...
      X