表单OnDeactivate - 需要确定哪个是新的Activated控件

时间:2016-06-09 09:15:20

标签: delphi delphi-7

我有一个代码,显示特定DBGrid的搜索表单,该表格放在另一个表单中(TSearchGridForm的调用者表单):

procedure TSearchGridForm.FormDeactivate(Sender: TObject);
begin
  // Pseudo
  if NewActiveControl <> CallerForm.DBGrid then
    Close;
end;

TSearchGridForm由具有.Show(而非模态)的呼叫者表单激活,当它被停用时,我想仅在新的活动控件&lt;&gt;时才关闭/隐藏它。 CallerForm.DBGrid

只有当用户点击来电者表单上的DBGrid时,搜索表单仍然可见,否则我需要关闭它。

我该怎么做?

1 个答案:

答案 0 :(得分:5)

Delphi的TScreen对象包含事件OnActiveControlChange和OnActiveFormChange。您可以为这些设置事件处理程序以监视更改并对其作出反应。

有关详细信息,请参阅D7在线帮助。有两个事件的Delphi VCL代码示例。