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

Form OnDeactivate - need to determine which is the new Activated control

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

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

TSearchGridForm 由具有 .Show(不是模态)的调用者表单激活,当它被停用时,我想 close/hide 只有当新的活动控件 <> CallerForm.DBGrid.

只有当用户在调用方表单上单击 DBGrid 时,搜索表单才应该保持可见,否则我需要关闭它。

我该怎么做?

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

有关详细信息,请参阅 D7 联机帮助。有 Delphi 个使用这两个事件的 VCL 代码示例。