Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Von welcher Klasse ableiten? (https://www.delphipraxis.net/41923-von-welcher-klasse-ableiten.html)

Pseudemys Nelsoni 10. Mär 2005 19:17


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.

Bernhard Geyer 10. Mär 2005 21:16

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).

Dax 10. Mär 2005 21:17

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.

Pseudemys Nelsoni 10. Mär 2005 21:24

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.

Dax 10. Mär 2005 21:26

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.

Pseudemys Nelsoni 10. Mär 2005 21:37

Re: Von welcher Klasse ableiten?
 
moin,

in der Delphi 6 hilfe steht aber genau das gleiche :)

Zitat:

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. Weitere Informationen hierzu finden Sie im Abschnitt Eigenschaften überschreiben und neu deklarieren.

Dax 10. Mär 2005 21:40

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;

Pseudemys Nelsoni 10. Mär 2005 21:45

Re: Von welcher Klasse ableiten?
 
Moin Dax,

dies scheint aber keine Wirkung zu haben, denn wenn ich folgendes habe:

Delphi-Quellcode:
type
  TBase = class(TCollectionItem)
  private
    fString: string;
  published
    property AString: string read fString write fString;
  end;

  TDescendant = class(TBase)
  private
    property AString;
  end;
und eine instanz von TDescendant erzeuge, kann ich immernoch auf "AString" zugreifen obwohls ja im private ist

Dax 10. Mär 2005 21:49

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 ^^

bttb930 10. Mär 2005 21:50

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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.
Seite 1 von 2  1 2      

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