我们的应用程序以前使用了所有表单都应继承的通用基本表单。我想摆脱它的原因有很多,从需要警惕每个人都使用它到涉及Delphi VFI实现的一些烦恼。事实证明,它提供的大部分功能都可以通过其他更可靠的方式来完成。

我不太确定的一种方法是,将所有表单自动放置在其调用者的中心。因此,如果从主窗体中打开对话框A,则应将其放置在主窗体的中央。然后,如果我从对话框A中打开对话框B,则应将其放置在对话框A的中心上方,依此类推。

我们以前通过将基本表单的Position属性设置为poOwnerFormCenter来处理所有这些问题,并且效果很好。但是,如何在整个应用程序中执行此操作?

我考虑过使用Screen.OnActiveFormChange,但是我认为每次表单获得焦点时都会发生这种情况。我还考虑过使用Application.OnModalBegin,但是似乎没有一种明显的方法可以在调用此点时找到表单。

有人尝试过吗?

最佳答案

好吧,显然可以提供表单继承来完全解决您要解决的问题。任何解决方案都可能以某种方式结束模仿表单继承。

您能做些简单的事情,例如在全局代码中搜索“= class(TForm)”,然后用现有的基本表单或仅具有所需功能的新的简化的基本表单类替换TForm类吗?

失败的话,您可以尝试修改原始TForm类本身以具有所需的定位行为。显然,修改提供的类有点危险。

10-08 05:21