使用新表单禁用Application.CreateForm

时间:2018-02-26 09:49:36

标签: delphi delphi-10.2-tokyo

我有一个在应用程序启动之前检查设置和权限的函数,如果一切都通过,它会选择要运行的版本并相应地更改主窗体。

function SomeControlFunction: Boolean;
var
  lMainForm : TForm;
begin
  if SomePermission then
    Application.CreateForm(TUForm1, lMainForm)
  else
    Application.CreateForm(TUForm2, lMainForm);
end;

Project.dpr

Application.Initialize;
if SomeControlFunction then
  Application.Run;

不幸的是,每次我在项目中创建新表单时,它都会自动添加到Project.dpr,我每次都必须删除它。有没有办法禁用此行为或整个过程是否错误,我应该以不同的方式运行应用程序?

Application.Initialize;
if SomeControlFunction then
  Application.CreateForm(TUNewForm, UNewForm);
Application.Run;

2 个答案:

答案 0 :(得分:9)

有一种方法可以阻止IDE以这种方式更改dpr文件。

似乎Delphi IDE将显式查找dpr文件中使用Application的全局变量Vcl.Forms的位置,并相应地添加CreateForm调用。

如果您使用'别名'变量 - 让我们说App - 相反,IDE不会干涉。用以下内容替换dpr文件中的现有代码:

var
  App: TApplication;
begin
  App := Application;
  App.Initialize;
  if SomeControlFunction then
    App.Run;
end.

添加新表单现在不会自动在您的dpr文件中添加CreateForm次调用。

答案 1 :(得分:4)

  

有没有办法禁用此行为?

在选项对话框中,选择Form Designer节点,然后取消选中自动创建表单&数据模块选项。

此选项的文档说明:

  

切换是否自动创建表单。取消选中后,在第一个项目之后添加到项目中的表单将放入“可用表单”列表而不是“自动创建”列表中。您可以通过选择项目>来更改每个表单的列表位置选项> Forms

文档未告诉您的是,当您将新表单添加到尚未包含至少一个自动创建表单的项目时,将忽略此选项。所以它可能不会对你有用。

顺便说一下,<form> <p class="ptags">Kommentar:</p> <textarea id="kommentar" rows="5"></textarea> <p>Kommentar Ziffern</p> <p id="ikomm"></p> </form> <button onclick="zkommentar();">Test</button>没有设置返回值。