首页 > 解决方案 > Delphi Firemonkey Frames - 如何获取框架使用的事件OnEnter和OnExit

问题描述

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

标签: delphifiremonkey

解决方案


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

...

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.

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


推荐阅读