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

zig*_*zig 3 delphi delphi-7

我有代码显示特定DBGrid的搜索表单,该表单以另一种形式(调用者表单TSearchGridForm)放置:

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

TSearchGridForm由呼叫者形式与活化.Show(未模态),并且当它被停用我想关闭/隐藏它仅当新的现用控制<> CallerForm.DBGrid.

只有当用户点击DBGrid调用者表单时,搜索表单才会保持可见,否则我需要将其关闭.

我怎样才能做到这一点?

Mar*_*ynA 5

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

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