Delphi Firemonkey Frames - 如何获取框架使用的事件 OnEnter 和 OnExit

Joh*_*art 2 delphi firemonkey

使用 Delphi Tokyo 和 FireMonkey:我在一个表单上有很多不同的框架,我想设置一些表单级别的变量,因为表单的焦点在不同框架中的进出变化。前任。我在表单上有一个插入按钮,如果用户所在的框架允许插入,则希望启用它,然后在离开框架的焦点时再次禁用它。框架上有 OnEnter 和 OnExit 事件,但它们永远不会执行。显然,框架上有编辑等。

Dav*_*age 5

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormFocusChanged(Sender: TObject);
  private
    FFocusedFrame: TFrame;
  public
    { Public declarations }
  end;
Run Code Online (Sandbox Code Playgroud)

...

procedure TForm1.FormFocusChanged(Sender: TObject);
var
  LParent: TFmxObject;
begin
  if Focused <> nil then
  begin
    LParent := Focused.GetObject.Parent;
    while (LParent <> nil) and not (LParent is TFrame) do
      LParent := LParent.Parent;
    if (LParent <> nil) and (FFocusedFrame <> LParent) then
    begin
      FFocusedFrame := TFrame(LParent);
      Label1.Text := FFocusedFrame.Name;
    end;
  end;
end;

end.
Run Code Online (Sandbox Code Playgroud)

无需为每个控件连接 OnEnter 和 OnExit