Reputation: 3932
I'm trying to do something like this:
function CreateIfForm ( const nClass : TClass ) : TForm;
begin
if not ( nClass is TFormClass ) then
raise Exception.Create( 'Not a form class' );
Result := ( nClass as TFormClass ).Create( Application );
end;
This produces error "Operator not applicable to this operand type". I'm using Delphi 7.
Upvotes: 6
Views: 992
Reputation: 14001
First you should check if you can change the function to accept only a form class:
function CreateIfForm(const nClass: TFormClass): TForm;
and bypass the need for type checking and casting.
If this isn't posssible, you can use InheritsFrom
:
function CreateIfForm(const nClass: TClass): TForm;
begin
if not nClass.InheritsFrom(TForm) then
raise Exception.Create('Not a form class');
Result := TFormClass(nClass).Create(Application);
end;
Upvotes: 18