我使用Firemonkey XE8开发了一个MacOS应用程序,我注意到主窗体的X按钮实际上终止了应用程序而不是隐藏/最小化它,因为它是大多数MacOS应用程序中的默认行为。
要解决此问题,我在FormCloseQuery中添加了以下逻辑,以便在有人点击X按钮时最小化应用程序:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
{$IFDEF MACOS}
if (Self.WindowState<>TWindowState.wsMinimized) then begin
Self.WindowState:=TWindowState.wsMinimized;
CanClose:=false;
end
else
CanClose:=true;
{$ENDIF MACOS}
end;
这有效但副作用是如果有人右键单击Dock中的应用程序并选择退出,如果表单尚未最小化,应用程序将被最小化。因此,用户应单击退出两次以真正关闭应用程序。
有什么方法可以解决这个问题吗?关闭按钮应隐藏/最小化窗口,Quit应终止应用程序。
答案 0 :(得分:1)
我没有苹果电脑,但我已经在Windows上测试了这个代码,它可以工作。 (XE2 FM app)
uses
fmx.platform
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
p:TPointF;
begin
p := Platform.GetMousePos;
p := ScreenToClient(p);
if p.Y > 0 then
CanClose := True
else
begin
Self.WindowState:=TWindowState.wsMinimized;
CanClose:=false;
end;
end;
答案 1 :(得分:0)
行为不不同。
您只是在多个文档应用程序上看到MacOS上的这种行为(与Windows中已知的MDI相当)。