【问题标题】:Move some of the methods into a different file?将某些方法移动到不同的文件中?
【发布时间】:2020-05-05 12:41:19
【问题描述】:

我的主窗体中有很多 OnClick 和类似事件。在 Unit1.pas 中很难在它们之间导航。 我将它们移动到不同的 pas 文件中,并将其添加到我的 Unit1.pas 中:

{$INCLUDE Menu.pas}

但现在 Delphi 想要删除 OnClick 事件。所以它不能正常工作。 如何将我的代码拆分为不同的文件?

【问题讨论】:

  • 不要这样做。将它们保存在同一个文件中。
  • @Tom:那么您似乎可以通过将代码从这些事件处理程序中移出来重构代码。例如,如果您有一个TButton.OnClick 处理程序使表单上的位图图像变暗,您可以将位图变暗代码提取到过程DarkenBitmap(Bitmap: TBitmap) 中,并将其放入名为BitmapUtils 的单元中。然后您的事件处理程序可以简单地调用此方法,将其行数从 35(比方说)减少到 3(比方说)。
  • 正如许多人在 cmets 中对您的问题所说的那样 - 重构。如果您的表单适合这种方法,制作一些框架也可能会有所帮助。此外,如果您有许多控件执行几乎完全相同的操作(假设您有 10 个按钮调用某个方法但参数为 1 到 10),您可能会尝试为所有控件分配相同的操作,设置每个控件的标记到 1-10 并检查事件中的发件人标签。
  • 如果通过代码导航是您的主要关注点,您可以加载 MMX CodeExplorer(一个 IDE 插件,请参阅 mmx-delphi.de),它具有帮助在源代码中快速导航的功能。实际上,没有它我不能离开。
  • 如果您有大量类似的按钮,您可以通过编程方式创建它们并为它们分配相同的事件处理程序。

标签: delphi delphi-10.3-rio


【解决方案1】:

您不能将表单的事件处理程序移动到.inc 文件,IDE 不知道如何处理它。 在设计时分配的事件处理程序需要是可定位和可编辑的,这意味着它们必须与表单本身位于同一源文件中。

您可以做的是将事件处理程序移动到之前创建的 TDataModule,并由相关表单使用。只要 DataModule 的单元包含在 Form 的 interface 部分的 Form 的 uses 子句中,IDE 就应该允许您在设计时分配事件处理程序。如果您使用 Object Inspector 创建新的事件处理程序,则必须手动将它们移动到 DataModule 并相应地重新分配事件。

否则,您真正能做的就是重构代码以减少每个事件处理程序中的代码量,甚至减少使用的事件处理程序的数量。然后您可以使用代码编辑器的代码折叠功能隐藏剩余的代码,这样您就看不到它,但它仍然存在于 IDE 和编译器中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2021-09-12
    • 1970-01-01
    • 2021-02-25
    相关资源
    最近更新 更多