【问题标题】:Is it safe to remove the IDE-created form variable?删除 IDE 创建的表单变量是否安全?
【发布时间】:2011-02-01 13:35:53
【问题描述】:

我有一个名为 MyForm 的表单存储在一个名为 UnitUnitMyFrom 的单元中。当然 Delphi 自动添加了这段代码:

TYPE
  TMyForm = class(TForm)
  private
  public
 end;

var MyForm: TMyForm;

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


编辑:

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

【问题讨论】:

    标签: delphi forms


    【解决方案1】:

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

    【讨论】:

    • 感谢您的确认。我也一样。 +1
    • +1。我希望有一个选项可以自动将新表单添加到自动创建列表中。我希望有一个选项可以创建那个麻烦的“var”。哦,好吧...
    • @Cosmin 有一个选项。它被称为“自动创建表单和数据模块”。好像没什么效果!!显然我做的不对,或者误解了文档。
    • 您引用的选项会阻止自动创建表单,但不会删除表单的全局变量。
    • 你如何创建主窗体并使其表现得像这样?在OnClose 事件中调用Application.Terminate?任务栏图标呢?其他的?
    【解决方案2】:

    删除项目 .dpr 文件中的 Application.CreateForm(TMyForm, MyForm); 行,您不会有任何问题。

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

    【讨论】:

    • @Altar:那就不会有问题了
    【解决方案3】:

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

    【讨论】:

    • 或者更准确地说,当您将表单添加到自动创建的表单时,这就是 IDE 想要做的事情。如果你想自己做,你可以把变量放在你喜欢的任何地方。无论如何,您都不应该过度使用自动创建。
    【解决方案4】:

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

    【讨论】:

    • 嗨。我不会自动创建该表单。 +1
    【解决方案5】:

    您可能希望在 dpr 文件的 usescontains 子句中保留这一行:

      Unit1 in 'Unit1.pas' {Form1};
    

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

    【讨论】:

    • +1;我已经看到很多项目把这件事搞砸了(因为人们认为他们拥有 .dpr;你没有:IDE 拥有 DPR,你拥有单元。人们将所有特殊代码和约定都放在“MainUnit”中)。
    • @Jeroen 好吧,我不同意。 IDE 搞砸了。我希望在我的项目中有条件地包含单元(例如,在不同的内存管理器之间切换,支持不同版本的 Delphi)。 IDE 搞砸了。我需要比 IDE 制作的 dpr 更好地控制表单创建和销毁,并且还需要解决一些与此相关的 VCL 错误。
    • 是的,我的 DPR 文件中还有那一行。
    • @David 很容易将该决定推迟到另一个单元并仍然让 Delphi IDE 满意。您可能会讨厌 IDE 拥有 .dpr,但 15 年多来这已成为事实,所以现在您应该学会接受它。
    • @jeroen 你熟悉安装自定义内存管理器吗?
    【解决方案6】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 2014-12-20
      • 2010-10-07
      • 2020-09-10
      相关资源
      最近更新 更多