![]() |
Auf Objekte aus abgeleiteten Klassen zugreifen
Hallo zusammen,
wie kann man ein (geerbtes) Objekt aus einer Vater-Klasse ansprechen? Leider bekomme ich bei folgendem Aufruf ein Fehlermeldung, dass der Bezeichner undefiniert ist:
Delphi-Quellcode:
Mit der Anweisung "inherited" rufe ich doch alle Objekt in der Vater-Klasse auf, die dann auch verfügber sein sollten? Oder?
type
TTabsheet_Rekl_Master= class(TTabSheet) private public constructor create(Aowner:TComponent); end; TTabsheet_KRekl= class(TTabsheet_Rekl_Master) private public constructor create(Aowner:TComponent); end; implementation constructor TTabsheet_Rekl_Master.create(Aowner:TComponent); var gb_Headdata : TGroupBox; ... begin inherited; gb_Headdata := TGroupBox.create(self); gb_Headdata.parent := self; ... end; constructor TTabsheet_KRekl.create(AOwner:TComponent); var edt_WSO : TEdit; lb_WSO : TLabel; begin inherited; edt_WSO := TEdit.create(self); edt_WSO.parent := gb_Headdata; // <- Hier will die IDE nicht mehr weiter! Fehlermeldung: Undefinierter Bezeichner: gb_Headdata ... end; end. P.S.: Die Klassen sind beide "lauffähig" (Ableitung natürlich nur ohne Erweiterung!). Die abgeleitete Klasse wird zur Laufzeit erzeugt. |
Re: Auf Objekte aus abgeleiteten Klassen zugreifen
1. Der Konstruktor muss überschrieben werden, mit override.
2. Es heißt inherited(AOwner) oder inherited Create(AOwner), da der geerbte Konstruktor ja einen Parameter erwartet. |
Re: Auf Objekte aus abgeleiteten Klassen zugreifen
Zitat:
@quso: Du versuchst, auf eine lokale Variable aus einer andereren Prozedur zuzugreifen. Das funktioniert weder mit noch ohne Ableitung. Deklariere gb_Headdata als Feld (entweder protected/public oder private mit Property). |
Re: Auf Objekte aus abgeleiteten Klassen zugreifen
Zitat:
|
Re: Auf Objekte aus abgeleiteten Klassen zugreifen
Besser gesagt ist diese Aufrufform überhaupt nicht möglich ;) .
Dass sein Code funktioniert, weiß er ja schon selbst (deine Zusammenfassung schadet natürlich trotzdem nix :zwinker: ): Zitat:
|
Re: Auf Objekte aus abgeleiteten Klassen zugreifen
Danke an @Khabarakh und @DAX!
Und so funktioniert es:
Delphi-Quellcode:
type
TTabsheet_Rekl_Master= class(TTabSheet) private public constructor create(Aowner:TComponent); protected gb_Headdata : TGroupBox; end; ... constructor TTabsheet_Rekl_Master.create(Aowner:TComponent); begin ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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