有没有一种方法可以仅通过名称动态创建表单? 这个概念是这样的。我有一个主窗体,通过一些用户选择,必须创建许多预定义的窗体并将其停靠在主窗体上的页面控件上的选项卡项上。 我确实知道表单的名称,并且确实知道何时创建每个表单,但我想知道是否有更好的方法通过单个过程调用创建这些表单,并且不在我的代码中包含所有这些信息.
它的 Delphi XE3 firemonkey,在 win 7 上。
预先感谢您的帮助
最佳答案
显然,在 Firemonkey Delphi 上,Delphi 不会自动注册可按名称使用的表单类,因此您首先需要将类似这样的内容添加到保存表单类的单元的末尾:
unit Form10;
[ ... ]
// Right before the final "end."
initialization
RegisterFmxClasses([TForm10]);
end.
这将自动注册TForm10
,因此可以通过名称使用它。接下来,您可以使用此类代码在运行时通过其类名创建表单:
procedure TForm10.Button1Click(Sender: TObject);
var ObjClass: TFmxObjectClass;
NewForm: TCustomForm;
begin
ObjClass := TFmxObjectClass(GetClass(ClassName));
if ObjClass <> nil then
begin
NewForm := ObjClass.Create(Self) as TCustomForm;
if Assigned(NewForm) then
NewForm.Show;
end
end;
关于delphi - 按名称动态创建表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14004373/