我们的应用程序过去常常使用所有表单都要继承的公共基本表单.我想摆脱它有很多原因,从需要警察每个人都使用它到几个与Delphi的VFI实施相关的烦恼.事实证明,它提供的大部分功能都可以通过其他更可靠的方式完成.
我不太确定的是自动将所有表单放在其呼叫者的中心.因此,如果我从主窗体打开Dialog A,它应该放在主窗体的中心.如果我从Dialog A打开Dialog B,它应该放在Dialog A的中心,依此类推.
我们过去通过将基本表单的Position属性设置为poOwnerFormCenter来处理所有这些,并且它工作得很好.但是,我如何在应用程序范围内执行此操作?
我想过使用Screen.OnActiveFormChange,但我认为每次表单获得焦点时都会发生这种情况.我还想过使用Application.OnModalBegin,但似乎没有一种明显的方法可以在调用它时查找表单.
有没人试过这个?
嗯,很明显形式提供继承来解决正是你试图解决的问题.任何解决方案可能都会以某种方式模仿表单继承.
你可以做一些简单的事情,如全局搜索你的代码"= class(TForm)",并用你现有的基本表单或只有你需要的功能的新的,简化的基本表单类替换TForm类吗?
如果做不到这一点,您可以尝试修改原始的TForm类本身以获得所需的定位行为.显然,修改提供的类有点危险.