在 Delphi 中有没有一种方法可以在多个文件中定义一个类的方法?我有一个非常大的表单(接近10万行),我想把它分开。
编辑:Class helpers在这种情况下不是一个好工具,因为您不能将helper类中的方法设置为事件处理程序,这意味着您必须创建“转发”事件处理程序,从而增加了很多复杂性。
在 Delphi 中有没有一种方法可以在多个文件中定义一个类的方法?我有一个非常大的表单(接近10万行),我想把它分开。
编辑:Class helpers在这种情况下不是一个好工具,因为您不能将helper类中的方法设置为事件处理程序,这意味着您必须创建“转发”事件处理程序,从而增加了很多复杂性。
2条答案
按热度按时间k3bvogb11#
除了将表单代码分解为许多较小的
include
文件(如Rohit的回答所建议的)之外,没有任何方法可以直接实现您所要求的内容。然而,在 Delphi 中从
include
文件集合中组合一个表单(或任何其他源文件)将解决一个问题,同时引入更多问题,可能比原来的问题更糟糕。也许一切都不会失去,尽管在不了解更多有关形式的情况下很难提出替代方案。但这里有几个想法...
页面/选项卡控件“重新建立父级”
如果它是具有页面/选项卡控件的表单,该页面/选项卡控件具有许多选项卡,每个选项卡具有大量控件和代码,则一种替代方案可能是将各个选项卡拆分成各个表单,并且根据需要将内容动态地重定父级到主表单中(根据需要或作为表单初始化的一部分)。
这可以像在每个“子”窗体中提供
Panel
控件并将Panel.Parent
设置为相应的选项卡控件表一样简单(面板上的父级控件将“跟随它”。在面板上使用alClient
对齐方式以及控件上的相应对齐方式或锚设置,以便在控件父面板从“设计时”窗体移动到“设计时”窗体时保留“响应”布局。窗体添加到“运行时”选项卡控件。与这些控件相关的事件处理和其他代码将继续驻留在分解的“子”窗体中。
警告:你没有提到这是一个VCL还是FMX项目。我过去曾成功地在 * 非常 * 大的VCL项目中使用过上述方法,但我不知道FMX是否支持该方法。
业务对象
如果没有明显的UI分解,但是表单包含大量的业务逻辑,那么可以简单地将业务逻辑重构为一个(或多个)业务对象。
将表单代码限制为处理用户交互和UI更新,并将所有非UI代码移到单独的文件中。
ewm0tg9j2#
我过去所做的是将文件分为定义和实现。
A类考绩制度
你有多少include文件并不重要。就编译器而言,它只是一段很长的代码。如果你愿意,你可以把每个方法放在不同的文件中。你可以使用任何扩展名。我更喜欢使用IMP(而不是PAS)作为include,以阻止初级程序插入。
当他们查看PAS文件时,他们看到的是类定义,这就是他们完成任务所需要的全部内容。
你甚至可以嵌套包含文件,也就是说,从一个包含文件调用另一个包含文件。但是这会变得很混乱。我已经使用嵌套包含文件来构造编译器定义,公司范围的,应用范围的,等等。应用定义文件将包括公司定义。