1

我有一个主窗体和一个辅助窗体,它们都带有来自公共数据库的一些 DBAware 控件。目前我正在使用 ShowModal 但我希望能够使用 Modal 返回主窗体并导航数据库。

在二级中,我可以用 TEdits 替换 TDBEdits,并在显示二级表单时用数据填充它们。没有办法在辅助窗体中导航数据库,但是,如果用户可以返回到他们可以导航的主窗体,我将需要在他们返回辅助窗体时重置数据库光标。

我怎么知道辅助表单刚刚失去焦点?我可以抓取数据库光标位置。

我如何判断辅助表单何时再次获得焦点?因此,如果在返回之前移动了数据库游标,我可以重置它。

谢谢 ps 请不要对原因和/或替代建议提出任何问题。这是一个现有的应用程序,我真的不想修复数英里的代码。尽管它很糟糕,但它已经工作了多年,客户希望改变可能。:)

4

2 回答 2

7

使用表单OnActivateOnDeactivate事件。OnActivate在表单获得焦点OnDeactivate时调用,在失去焦点时调用。

请注意,这些事件仅在您自己的应用程序中转移焦点时触发。如果您需要知道您的应用程序本身何时失去或获得焦点,请使用TApplication.OnActivateandTApplication.OnDeactivate代替。

于 2013-08-08T01:45:36.720 回答
3

您可以查看辅助表单的onActivateonDeactivate事件。我认为它们是你所需要的。

注意:仅当焦点切换到另一种形式的项目时,OnDeactivate 才有效。例如,我有 project1.exe ,它创建了 2 个表单 Form1 和 Form2 。因此,如果我点击 Form2,就会触发 Form1 OnDeactivate 事件。但是,如果我单击记事本窗口,它将不会被触发。

于 2013-08-08T01:44:45.520 回答