Es ist zwar kein richtiges Problem (es läuft zwar) aber trotzdem ich bin bei folgendem Konstrukt nicht mehr wirklich sicher, was da passiert:
Delphi-Quellcode:
interface
type
TTextEditor= class(TMyForm)
public
constructor Create(AOwner : TComponent); overload; override; // <----- ES GEHT UM DIESE ZEILE
constructor Create(AOwner : TComponent; lNEm : Boolean); reintroduce; overload;
end;
implementation
//----------------------------------------------------------------------------------------------------------------------
// Klasse erzeugen - Default konstruktor
//----------------------------------------------------------------------------------------------------------------------
constructor TTextEditor.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
lNotEmpty := False;
end;
//----------------------------------------------------------------------------------------------------------------------
// Klasse erzeugen - Konstruktor mit Parameter
//----------------------------------------------------------------------------------------------------------------------
constructor TTextEditor.Create(AOwner : TComponent; lNEm : Boolean);
begin
inherited Create(AOwner); // <-- Welcher Konstruktor wird hier warum aufgerufen
lNotEmpty := lNEm;
ActionCancel.Enabled := not lNotEmpty;
end;
In der obigen Form kompiliert Delphi ohne zu meckern.
Bei folgenden Varianten kommen entweder Warnungen (nicht schön, will ich weg haben) oder gar Fehler:
Variante 1:
Delphi-Quellcode:
constructor Create(AOwner : TComponent); override; overload; // <----- ES GEHT UM DIESE ZEILE
constructor Create(AOwner : TComponent; lNEm : Boolean); reintroduce; overload;
Fehler: Feldbezeichner nicht erlaubt nach Methoden oder Eigenschaften
Variante 2:
Delphi-Quellcode:
constructor Create(AOwner : TComponent); overload; // <----- ES GEHT UM DIESE ZEILE
constructor Create(AOwner : TComponent; lNEm : Boolean); reintroduce; overload;
Warnung: W1010 Methode 'Create' verbirgt virtuelle Methode vom Basistyp 'TFormPPS'
Wer klärt mich auf????