我有一个主表单和一个辅助表单,它们都有一个来自公共数据库的DBAware控件。目前我正在使用ShowModal,但我希望能够使用Modal返回主窗体并导航数据库。
在辅助中,我可以用TEdits替换TDBEdits,并在显示辅助表单时填充数据。无法以辅助形式导航数据库,但是,如果用户可以返回到可以导航的主窗体,我将需要在返回辅助窗口时重置数据库光标。
我如何判断辅助表格刚刚失去焦点?我可以抓住数据库光标位置。
如何判断辅助表单何时再次获得焦点?因此,如果在返回之前移动了数据库游标,我可以重置它。
由于 附:请不要质疑为什么和/或其他建议。这是一个现有的应用程序,我真的不想要修复数英里的代码。虽然它很糟糕,它已经工作多年,客户希望改变可能。 :)
答案 0 :(得分:5)
使用表单的OnActivate
和OnDeactivate
事件。当表单获得焦点时调用OnActivate
,并在失去它时调用OnDeactivate
。
请注意,只有在您自己的应用程序中传输焦点时才会触发这些事件。如果您需要知道应用程序本身何时失去焦点或获得焦点,请改用TApplication.OnActivate
和TApplication.OnDeactivate
。
答案 1 :(得分:3)
您可以查看辅助表单的onActivate
和onDeactivate
个事件。我认为他们就是你所需要的。
注意:仅当焦点切换到另一种形式的项目时,OnDeactivate才有效。例如,我有project1.exe,它创建2个窗体Form1和Form2。因此,如果我使用Form2,Form1 OnDeactivate事件触发器。但是,如果单击“记事本”窗口,则不会触发。