Delphi 注册表类X扩展TForm/eFileError';名为TForm的类已存在';
我在一个单独的单元中扩展了TFormDelphi 注册表类X扩展TForm/eFileError';名为TForm的类已存在';,delphi,delphi-7,tform,Delphi,Delphi 7,Tform,我在一个单独的单元中扩展了TForm TForm = class(Forms.TForm) protected { convenient extensions } public { more extensions } end; 这个单元(带有扩展的TForm)在我想要应用这些扩展的所有表单单元中声明 但是,在其中一些单元中,有以下代码段: Initialization RegisterClass(TFormN); Finalization UnRegisterClass(TFormN
TForm = class(Forms.TForm)
protected
{ convenient extensions }
public
{ more extensions }
end;
这个单元(带有扩展的TForm)在我想要应用这些扩展的所有表单单元中声明
但是,在其中一些单元中,有以下代码段:
Initialization
RegisterClass(TFormN);
Finalization
UnRegisterClass(TFormN);
但通过这种方式,我得到消息[EFilerError]“名为TForm的类已经存在”
过去几天我一直在寻找解决这场冲突的方法,但没有成功
有没有人经历过这个。。。?或者可以解释为什么这个问题
问题是我已经在两个项目中用扩展的形式实现了这个单元-成功地 刚才,在第三个项目中,表单类在没有实例化的情况下被调用。。。我不能从以下位置更改扩展类表单: TForm=class(Forms.TForm) 致: TStyleForm=class(Forms.TForm)
我需要的是:
TFormStyle = class(Forms.TForm)
public
constructor Create(AOwner: TComponent); override;
end;
TForm = ^TFormStyle;
但在单位里我不能做这样的声明:
TMyForm = class(TForm)
{ something... }
end;
因为现在它是一个指针…您的程序中现在有两种不同的类型,它们的名称都是
TForm
。VCL中声明的名称注册为TForm
。由于您试图使用与VCL版本相同的名称向全局注册表注册TForm
,因此注册自然会失败
一些可能的前进方式:
Application.CreateForm
,也可以通过标准构造函数TForm.Create
。您需要确保在任何uses子句中,始终在Forms
之后列出声明您的TForm
的单元。或者使用全范围类型,如MyForms.TForm
TForm
用于所有表单,而不是forms.TForm