![]() |
Propertys in einer abgeleiteten Klasse "unsichtbar&quo
Hallo
wer weiß wie man Propertys, welche per "published" in einer Vorgängerklasse sichtbar gemacht wurden, in einer abgeleiten Klasse wieder verbergen kann. Der Zweck soll sein, in einer Komponente zur Entwurfszeit (IDE), Eigenschaften im Objektinspektor, die in der "abgeleiteten" Komponente keinen Sinn machen zu verbergen. Dies dürfte sicher auch von allgemeinem Interesse sein. Gruß ulli PS. Betrifft Delpi 7 |
Re: Propertys in einer abgeleiteten Klasse "unsichtbar
Herzlich willkommnen in der Delphi-PRAXiS, Ulli.
Kurze Antwort: vergiss es. Begründung: Borland schreibt zum Thema Sichtbarkeit von Klassenelementen Sie können die Sichtbarkeit eines Elements in einer untergeordneten Klasse durch Redeklarieren erhöhen, jedoch nicht verringern. So kann beispielsweise eine protected -Eigenschaft in einer abgeleiteten Klasse als public deklariert werden, nicht aber als private. Außerdem können published-Elemente nicht zu public-Elementen gemacht werden. Freundliche Grüße vom marabu |
Re: Propertys in einer abgeleiteten Klasse "unsichtbar
Hallo Ulli,
Zitat:
|
Re: Propertys in einer abgeleiteten Klasse "unsichtbar
Hallo,
Du könntest versuchen, die Klassen weiter "aufzudröseln". Also eine Basisklasse (TCustomxxx) von der sich dann mehrere Zweige ableiten (TCustomEditablexxx, TCustomNotEditablexxx). Setzt natürlich voraus, dass dies dann auch klar abgrenzbar ist. |
Re: Propertys in einer abgeleiteten Klasse "unsichtbar
Hallo marabu,
Besten Dank für die schnelle Reaktion. Das habe ich schon vermutet. Beim Öffnen einer Form (in der IDE) werden ja aus der DFM-Datei die Form und alle Komponenten in diesem Moment "hochgestreamt". Theoretisch müsste es doch möglich sein sich in das Streaming einzuklinken. So... beim Createprozess einer Komponente wird ja die Procedure DefinePropertys(Filer: TFiler) durchlaufen, hier habe ich die Möglichkeit eigene Proceduren "einzuklinken" wie ReadBinariData(Stream: TStream) und WriteBinäriDate(Stream: TStream), damit hänge ich schon mal dazwischen....
Delphi-Quellcode:
wäre das nicht doch ein Ansatzpunkt ?
procedure Txxxx.ReadBinaryData(Stream:TStream);
Begin ... End; procedure Txxxx.WriteBinaryData(Stream: TStream); Begin .... End; procedure Txxxx.DefineProperties(Filer: TFiler); begin inherited DefineProperties(Filer) Filer.DefineBinaryProperty('NameProperty',ReadBinaryData,WriteBinaryData,fFlagxx); end; Hallo Union Zitat:
Gruß Ulli |
Re: Propertys in einer abgeleiteten Klasse "unsichtbar
Der andere Weg wäre halt nicht die eigentliche Klasse zu überladen, sondern was eigenes (z.V. von direkt TObject ableiten) nur mit den gewünschten Eigenschaften zu erstellen und dann intern alles auf die andere Klasse umzuleiten.
|
Re: Propertys in einer abgeleiteten Klasse "unsichtbar
Wenn ich das lese, kommt mir die Direktive reintroduce in den Kopf. Ich weiss jetzt aber nicht mehr ob sich das nur auf Methoden bezog.
|
Re: Propertys in einer abgeleiteten Klasse "unsichtbar
Das verbergen ist völlig sinnlos denn man braucht die Klasse nur auf den Vorgänger zu casten (bzw. arbeitet mit dem Vorgänger) und schon kann man auf die properties welche versteckt werden sollten zugreifen.
himitsu hat eigentlich die einzig sinnvolle Variante gepostet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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 by Thomas Breitkreuz