【发布时间】:2011-09-23 15:51:50
【问题描述】:
我有一个包含多个 MDI 子项(以及非 MDI 表单)的 MDI 应用程序,我想跟踪哪个表单当前处于激活状态并始终具有焦点。当用户在应用程序中从一种形式切换到另一种形式时,我想捕获窗口激活消息,并在后台将全局变量设置为处于活动状态的表单属性(此属性继承自基类)。我最初将代码放在基类的 OnActivate 事件处理程序中(我的应用程序中的所有表单都使用它),但我注意到这个事件并不总是被引发。有任何想法吗?
我正在使用 Delphi 2006 BDS。
【问题讨论】:
-
专注是什么意思。如果您的意思是输入焦点,那么您可以调用 Windows.GetFocus,将结果传递给 FindControl,最后向上遍历父层次结构,直到到达一个表单。
-
@David:我会说,直到您找到层次结构的顶部(父级 = nil)。表单可以嵌入在表单中的框架内的框架内...
-
另外一点,下拉菜单不应该改变输入焦点或活动表单
-
感谢您的意见,我已经编辑了我原来的问题,希望能使它不那么含糊...