EIntfCastError
与构造函数中传递的 Owner 无关。这是因为您尝试将接口转换为您认为它支持的另一个接口,而实际上它并不支持它。
MyNewInterface := MyInterface as IADifferentInterface;
即使在创建 TForm 时,您也永远不需要传递 Owner。以下代码是完全合法的:
var
MyForm: TForm1;
begin
MyForm := TForm1.Create(nil);
try
MyForm.ShowModal;
finally
MyForm.Free;
end
end;
这也是如此(虽然它很愚蠢 - 但它说明了这一点):
implementation
var
Button: TButton;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button := TButton.Create(nil);
Button.Parent := Form1;
Button.Left := 10;
Button.Top := 10;
Button.Caption := 'Button';
Button.Name := 'MyDumbButton';
Button.OnClick := TheButtonClick;
end;
procedure TForm1.TheButtonClick(Sender: TObject);
begin
ShowMessage(TButton(Sender).Name + ' clicked');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Button.Free;
end;