AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Auf Objekte aus abgeleiteten Klassen zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Objekte aus abgeleiteten Klassen zugreifen

Ein Thema von quso · begonnen am 4. Sep 2006 · letzter Beitrag vom 4. Sep 2006
Antwort Antwort
quso

Registriert seit: 1. Okt 2005
Ort: Kleve
18 Beiträge
 
Turbo Delphi für Win32
 
#1

Auf Objekte aus abgeleiteten Klassen zugreifen

  Alt 4. Sep 2006, 22:33
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:
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.
Mit der Anweisung "inherited" rufe ich doch alle Objekt in der Vater-Klasse auf, die dann auch verfügber sein sollten? Oder?

P.S.: Die Klassen sind beide "lauffähig" (Ableitung natürlich nur ohne Erweiterung!). Die abgeleitete Klasse wird zur Laufzeit erzeugt.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Auf Objekte aus abgeleiteten Klassen zugreifen

  Alt 4. Sep 2006, 22:36
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Auf Objekte aus abgeleiteten Klassen zugreifen

  Alt 4. Sep 2006, 22:47
Zitat von 3_of_8:
inherited(AOwner)
Ähm... nein.

@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).
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: Auf Objekte aus abgeleiteten Klassen zugreifen

  Alt 4. Sep 2006, 22:50
Zitat von Khabarakh:
Zitat von 3_of_8:
inherited(AOwner)
Ähm... nein.
Ich präzisiere: stimmen Signatur des aktuellen Konstruktors und mindestens einem Konstruktor der Basisklasse überein, ist eine Auslassung des Konstruktornamens sowie der Parameter zulässig.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Auf Objekte aus abgeleiteten Klassen zugreifen

  Alt 4. Sep 2006, 22:56
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 ):
Zitat:
Die Klassen sind beide "lauffähig" (Ableitung natürlich nur ohne Erweiterung!).
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
quso

Registriert seit: 1. Okt 2005
Ort: Kleve
18 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Auf Objekte aus abgeleiteten Klassen zugreifen

  Alt 4. Sep 2006, 23:02
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

...
  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 15:18 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