![]() |
Von welcher Klasse ableiten?
Moin,
ich brauche soetwas wie TClientSocket, ABER die properties/Events dürfen noch nicht published sein, hat jemand ne Idee von wo ich da am besten ableiten sollte? bei "TCustomSocket" ist dies zwar der Fall, aber am ende braucht diese die Property "Active" und das will ich halt nicht. |
Re: Von welcher Klasse ableiten?
Leite ein eigene Klasse von TComponent ab und erzeuge als Member-Variable ein TClientSocket-Instanz.
Dann kannst Du wunderbar nur das freigeben was Du willst. Alternativ kannst Du eine Komponente erstellen, welche sich mit einer TClientSocket-Komponente verbinden kann (ähnliche z.B. TDatabase-TTable-TDataset-TDBGrid bei Verwendung der BDE). |
Re: Von welcher Klasse ableiten?
Oder leite dir einfach eine Komponente von TCostumSocket ab und verändere die Sichtbarkeit der Properties von published nach public.
|
Re: Von welcher Klasse ableiten?
Hallo Bernhard, ich werds dann so machen, danke für die Idee ;)
@Dax: man kann die Sichtbarkeit nur erhöhren, aber nie verringern. |
Re: Von welcher Klasse ableiten?
Dann weiß ich nicht, was bei mir los ist.. ich hab's mit meinem Delphi6 hinbekommen, eine published-Property protected zu kriegen.
|
Re: Von welcher Klasse ableiten?
moin,
in der Delphi 6 hilfe steht aber genau das gleiche :) Zitat:
|
Re: Von welcher Klasse ableiten?
Dann probier mal das aus.. Bei mir funktionierts. :gruebel:
Delphi-Quellcode:
type
TBase = class(TCollectionItem) private fString: string; published property AString: string read fString write fString; end; TDescendant = class(TBase) protected property AString; end; |
Re: Von welcher Klasse ableiten?
Moin Dax,
dies scheint aber keine Wirkung zu haben, denn wenn ich folgendes habe:
Delphi-Quellcode:
und eine instanz von TDescendant erzeuge, kann ich immernoch auf "AString" zugreifen obwohls ja im private ist
type
TBase = class(TCollectionItem) private fString: string; published property AString: string read fString write fString; end; TDescendant = class(TBase) private property AString; end; |
Re: Von welcher Klasse ableiten?
Ich verstehe die Welt, bzw. Delphi 6 nicht mehr.
Aber wenn du den Code in die selbe Unit einfügst ist das ja klar, denn im selben Namespace definierte Klassen können sich ja gegenseitig lesen und schreiben wie ihnen lieb ist. Sobald das aber in einer anderen Unit steht, ist TDescendant.AString garantiert private! PS: Hab's grade selbst ausprobiert, also bitte ^^ |
Re: Von welcher Klasse ableiten?
wenn du innerhalb der gleichen unit darauf zugreifst, dann ist das klar. kannst du aus einer anderen unit auch darauf zugteifen?
|
Re: Von welcher Klasse ableiten?
Liste der Anhänge anzeigen (Anzahl: 1)
ihr liegt falsch, ich hatte es natürlich in einer seperaten unit (unit1), die klassen selbst lagen in "pbirc".
Und siehe anhang... |
Re: Von welcher Klasse ableiten?
Ihr habt doch beide Recht. :???:
Ihr habt in TBase eine Eigenschaft AString. Diese ist public (oder published). Diese Sichtbarkeit von TBase kann nicht verringert werden! Wenn also in TDescendant ein AString als private steht, so hat das auf die Public-Sichtbarkeit von TBase.Astring keinen Einfluß. Das Astring, auf welches in Pseudemys Nelsonis Code zugegriffen wird, ist das von TBase. Das ist zu sehen, wenn man mit der Maus im Code auf AString geht ("prop TBase.AString: String - Unit2.pas ..."). In diesem Konstrukt und aus Unit1 heraus greift man also mittels TDescendant.AString in Wirklichkeit auf TBase.AString zu - ganz so, als wäre AString in TDescendant überhaupt nicht deklariert (also einfach nur geerbt) worden. AString ist aber sehr wohl in TDescendant private, jedoch hat der Nachfahre TDescendant damit nicht die Sichtbarkeit von TBase.AString verschlechtert. |
Re: Von welcher Klasse ableiten?
Das meinte ich ja mit:
Zitat:
MfG |
Re: Von welcher Klasse ableiten?
Zitat:
Siehe dazu auch noch meine Ergänzung im vorherigen Posting (hat sich mit deinem eben überschnitten). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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-2025 by Thomas Breitkreuz