AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Propertys in einer abgeleiteten Klasse "unsichtbar" machen
Thema durchsuchen
Ansicht
Themen-Optionen

Propertys in einer abgeleiteten Klasse "unsichtbar" machen

Offene Frage von "Corth"
Ein Thema von Corth · begonnen am 2. Jun 2006 · letzter Beitrag vom 5. Jun 2006
Antwort Antwort
Corth

Registriert seit: 13. Dez 2005
Ort: bei Tübingen
3 Beiträge
 
Delphi 7 Professional
 
#1

Propertys in einer abgeleiteten Klasse "unsichtbar&quo

  Alt 2. Jun 2006, 13:10
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
ulli
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Propertys in einer abgeleiteten Klasse "unsichtbar

  Alt 2. Jun 2006, 13:23
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Propertys in einer abgeleiteten Klasse "unsichtbar

  Alt 2. Jun 2006, 13:28
Hallo Ulli,
Zitat:
Eigenschaften im Objektinspektor, die in der "abgeleiteten" Komponente keinen Sinn machen zu verbergen. Dies dürfte sicher auch von allgemeinem Interesse sein.
Der Grund, warum es nicht geht, ist das die Beziehung IS-A zwischen der abgeleiteten Klasse und der Superklasse besteht. Nimmst du nun eine Eigenschaft weg, gilt diese Beziehung nicht mehr.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Propertys in einer abgeleiteten Klasse "unsichtbar

  Alt 2. Jun 2006, 13:33
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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Corth

Registriert seit: 13. Dez 2005
Ort: bei Tübingen
3 Beiträge
 
Delphi 7 Professional
 
#5

Re: Propertys in einer abgeleiteten Klasse "unsichtbar

  Alt 2. Jun 2006, 15:09
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:
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;
wäre das nicht doch ein Ansatzpunkt ?




Hallo Union

Zitat:
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.
Wenn ich die Propertys in der Vorgängerklasse deklariert habe, kann ich die Eigenschaften ja selbst per protected deklarieren und damit verbergen und erst in der abgeleiteten Klasse dann (published) sichtbar machen. Die geht leider nicht, wenn es sich um eine "fremde" Klasse handelt, welche ich nicht verändern kann. Ansonsten finde ich den Vorschlag gut.


Gruß Ulli
ulli
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Propertys in einer abgeleiteten Klasse "unsichtbar

  Alt 2. Jun 2006, 15:40
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.
$2B or not $2B
  Mit Zitat antworten Zitat
guste

Registriert seit: 23. Apr 2006
19 Beiträge
 
#7

Re: Propertys in einer abgeleiteten Klasse "unsichtbar

  Alt 5. Jun 2006, 14:39
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.
guste
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Propertys in einer abgeleiteten Klasse "unsichtbar

  Alt 5. Jun 2006, 14:43
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 23:51 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