Delphi-Quellcode:
type
TVater = Class( TForm )
public
Procedure SetFoo( A : TComponent ); Virtual; Abstract;
end;
TVaterClass = Class of TVater;
TMyForm = class( TVater )
public
Procedure SetFoo( A : TComponent ); override;
end;
var
AktForm : TVater;
FC : TFormClass;
begin
FC := GetForm('FormName'); // holt die Registriere Formclass TMyForm... (Source verkürzt)
if FC.InheritsFrom( TVater ) then
begin
AktForm := TVaterClass( FC ).Create( Self ); // Kein Typecast mehr!
AktForm.SetFoo(Self); // <- Abstracter Fehler ist weg
end;
end;
Kann ich auch noch testen, ob AktForm.SetFoo(Self); in TMyForm überladen wurde?
Nach dem Motto
AktForm hasImplemented(SetFoo), oder so?