Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 删除IDE创建的表单变量是否安全?_Delphi_Forms - Fatal编程技术网

Delphi 删除IDE创建的表单变量是否安全?

Delphi 删除IDE创建的表单变量是否安全?,delphi,forms,Delphi,Forms,我有一个名为MyForm的表单存储在一个名为unit UnitMyFrom的单元中。当然,Delphi会自动添加以下代码: TYPE TMyForm = class(TForm) private public end; var MyForm: TMyForm; 但是我从那个单元中删除了var声明。有人说这可能会导致IDE出现问题。这是真的吗?IDE是否需要该变量 编辑: MyForm不是自动创建的。用户在运行时创建该表单。当您想要自动创建表单时,我会说是,因为您需要将此变量传

我有一个名为MyForm的表单存储在一个名为unit UnitMyFrom的单元中。当然,Delphi会自动添加以下代码:

TYPE
  TMyForm = class(TForm)
  private
  public
 end;

var MyForm: TMyForm;
但是我从那个单元中删除了var声明。有人说这可能会导致IDE出现问题。这是真的吗?IDE是否需要该变量


编辑:


MyForm不是自动创建的。用户在运行时创建该表单。

当您想要自动创建表单时,我会说是,因为您需要将此变量传递给TApplication.CreateForm方法。

删除行
Application.CreateForm(TMyForm,MyForm)在project.dpr文件中,您不会有任何问题


如果不自动创建表单,则不会有任何问题

我不使用自动创建,也从不使用包含表单引用的全局变量。它工作正常。

转到“项目选项”,并确保表单不会自动创建。然后可以安全地删除表单实例变量。(否则,您只会得到一个编译器错误。)

您可能希望在dpr文件的
uses
contains
子句中维护这一行:

  Unit1 in 'Unit1.pas' {Form1};

如果您(或IDE)删除
{Form1}
-注释,那么您的表单将不会出现在
Shift+F12
列表中-仅出现在
Ctrl+F12
-列表中。

我删除了它们,并且已经以这种方式工作了很长一段时间(我不会自动创建或使用大多数表单的变量)。

或者更准确地说,这就是IDE在将表单添加到自动创建的表单时想要做的事情。如果你想自己做,你可以把变量放在任何你喜欢的地方。无论如何,你不应该过度使用自动创建。嗨。我不会自动创建那个表单+1@Altar:那么就不会有任何问题了,请确认。我也这么做+1+1. 我希望有一个选项,不自动将新表单添加到自动创建列表中。我希望有一个选择,不要创建那个麻烦的“var”。哦,好吧…@Cosmin有一个选择。它被称为“自动创建表单和数据模块”。这似乎没有任何效果!!很明显,我做得不对,或者误解了文档。您提到的选项会阻止表单自动创建,但不会删除表单的全局变量。那么,如何创建主表单并使其正常工作?调用
应用程序。是否在
OnClose
事件中终止
?任务栏图标呢?其他事情?+1;我见过很多项目把这搞砸了(因为人们认为他们拥有.dpr;你没有:IDE拥有dpr,你拥有单元。人们把他们所有的特殊代码和约定都放在一个“主单元”中。)@Jeroen我不同意。IDE搞砸了。我希望在我的项目中有条件地包含单元(例如,在不同的内存管理器之间切换,支持不同版本的Delphi)。IDE搞砸了。我需要比IDE制作的dpr更好地控制表单的创建和销毁,还需要解决一些与此相关的VCL错误。是的,我的dpr文件中仍然有这一行。@David很容易将这一决定推迟到另一个单位,并且仍然让Delphi IDE满意。你可能讨厌IDE拥有.dpr,但这已经是15年多的事实了,所以现在你应该已经学会适应它了。@jeroen你熟悉安装自定义内存管理器吗?