我有一个在应用程序启动之前检查设置和权限的函数,如果一切都通过,它会选择要运行的版本并相应地更改主窗体。
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;
答案 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>
没有设置返回值。