delphi - 按名称动态创建表单?

标签 delphi delphi-xe3 firemonkey-fm2

有没有一种方法可以仅通过名称动态创建表单? 这个概念是这样的。我有一个主窗体,通过一些用户选择,必须创建许多预定义的窗体并将其停靠在主窗体上的页面控件上的选项卡项上。 我确实知道表单的名称,并且确实知道何时创建每个表单,但我想知道是否有更好的方法通过单个过程调用创建这些表单,并且不在我的代码中包含所有这些信息.

它的 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/

相关文章:

WCF 客户端应用程序持久连接到非 WCF (DataSnap) 服务器

Delphi - 防止 Windows 从托盘应用程序关闭

delphi - 是否可以替换 Delphi XE3 附带的 Indy 版本?

Delphi Firemonkey 2 .color 属性

Delphi 无法正确终止 I/O 进程

forms - 数据库组件或新组件的视觉继承?

delphi - FireDAC TFDScript 尝试删除不存在的表时出错

c - Delphi-to-C dll : Passing Arrays

delphi - 带有“默认”按钮的表单上 TMemo 中的换行符

delphi - firemonkey 中的 GetKeyState