我正在编写一个组件,并希望将基类型更改为TForm但是在运行时我收到错误“未找到资源TMyComp”。我想这是因为没有dfm,但我不知道该怎么办。
由于
unit Unit65;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TMyComp = class(TForm);
TForm65 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
Mc: TMyComp;
{ Private declarations }
public
{ Public declarations }
end;
var
Form65: TForm65;
implementation
{$R *.dfm}
procedure TForm65.Button1Click(Sender: TObject);
begin
Mc := TMyComp.Create(Self);
Mc.Parent := nil;
Mc.ShowModal;
end;
end.
答案 0 :(得分:8)
TMyComp
没有.dfm文件。您可以通过调用CreateNew
构造函数而不是Create
来避免尝试加载.dfm。
Mc := TMyComp.CreateNew(Self);
使用CreateNew而不是Create来创建表单而不使用 关联.DFM文件来初始化它。如果是,请始终使用CreateNew TCustomForm后代不是TForm对象或TForm的后代。
CreateNew绕过先前关联的.DFM的流式传输 文件。因此,如果表单包含可视组件,则必须 在外部.DFM中流,以将可视组件与其绑定 类。如果新创建的表单有外部.DFM文件,那么您 可以通过调用来跟随对CreateNew的调用 InitInheritedComponent。如果您需要为。创建.dfm文件 新表单实例,通过调用括起对CreateNew的调用 WriteComponentResFile和ReadComponentResFile。