AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Constructor einer TForm überschreiben

Ein Thema von Dani · begonnen am 1. Jan 2005 · letzter Beitrag vom 1. Jan 2005
Antwort Antwort
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#1

Constructor einer TForm überschreiben

  Alt 1. Jan 2005, 16:27
Hallo und ein frohes neues Jahr @ all

Ich hab da ein Problem. Ich möchte in einem TForm-Nachkommen dem Konstruktor einen Parameter übergeben, mit dem ein Read-Only Wert gesetzt wird.

Delphi-Quellcode:
TMyForm = class(TForm)
  private
    FReadOnly: TReadOnly;
  public
    constructor Create(AOwner: TComponent; Value: TReadOnly); override;
  published
    property ReadOnly: TReadOnly read FReadOnly;
  end;

constructor TMyForm.Create(AOwner: TComponent; Value: TReadOnly);
begin
  inherited Create(AOwner);
 FReadOnly := Value;
end;
Das führt zu folgender Compiler-Fehlermeldung: "Deklaration von 'Create' unterscheidet sich von vorheriger Deklaration". Stimmt zwar, aber wo ist das Problem? Warum in Gottes Namen müssen die Parameterlisten identisch sein? Wie soll ich diesen Read-Only Wert sonst initialisieren?

Wenn ich das "override" weglasse, erscheint diese Warnung: "Methode 'Create' verbirgt virtuelle Methode vom Basistyp 'TCustomForm'". Wenn ich es richtig deute, heißt das, dass kein Zugriff mehr auf die Basismethoden besteht, d.h. inherited Create(AOwner); wäre nicht möglich bzw. würde nichts bewirken.

Oder doch? Hilfä

Vielen vielen Dank schonmal fürs lesen!
Gruß,
Dani
Dani H.
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#2

Re: Constructor einer TForm überschreiben

  Alt 1. Jan 2005, 16:35
schreib ein reintroduce; dahinter, dann müsstest du auch noch auf die inherited zugreifen können und der compiler wirft dir keine meldung mehr..
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Constructor einer TForm überschreiben

  Alt 1. Jan 2005, 16:40
auf den inherited Constructor kommst du trotzdem weiterhin drauf. Es bedeutet nur das du ohne inherited nicht mehr drauf zugreifen kannst weil dein neuer Constructor den gleichen Name hat und somit den virtuellen Constructor mit seinem Namen überdeckt. Das Reintroduce bewirkt dabei das die Compilermessage unterdrückt wird (du machst dem Compiler also Klar das du weißt was du tust (reintroduce ist nicht notwendig da es nur die warnung unterdrückt))
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Constructor einer TForm überschreiben

  Alt 1. Jan 2005, 16:48
Alles klar, der Compiler schweigt und inherited funktioniert wie vorher auch. Danke nochmal!
Dani H.
  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 19:07 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