0

我使用 Firemokey 10.2。在 macOS 中,当您从普通显示器移动到视网膜显示器时,它会在内部自动更改控件的样式。我想停止这条消息,它是 TScaleChangedMessage。如果您能帮助我,我将不胜感激如何在我的应用程序中停止此消息。换句话说,我如何才能停止从普通样式更改为高分辨率样式

4

2 回答 2

0

最简单的方法是创建 FMX.Platform.Mac 单元的副本,并修改 TFMXWindow.windowDidChangeBackingProperties 方法,以便永远不会发送消息,例如:

procedure TFMXWindow.windowDidChangeBackingProperties(notification: NSNotification);
begin
//  if (Application = nil) or (Application.Terminated) then
//    Exit;
//  try
//    TMessageManager.DefaultManager.SendMessage(nil, TScaleChangedMessage.Create(Wnd), True);
//  except
//    HandleException(Self);
//  end;
end;

即只是注释掉其中的所有内容

不幸的是,如果您使用的是 Delphi 10.2 Update 1,这意味着您需要在项目路径中包含所有FMX 单元(以便它们也被重新编译),因为这个问题:

https://quality.embarcadero.com/browse/RSP-18836

于 2017-09-18T09:10:09.953 回答
0

我找到了解决方案,更改此功能 function TMacWindowHandle.GetScale: Single; begin //Result := Wnd.backingScaleFactor result := 1; end; 将解决此问题:)

于 2017-09-18T20:50:55.880 回答