我使用 Firemokey 10.2。在 macOS 中,当您从普通显示器移动到视网膜显示器时,它会在内部自动更改控件的样式。我想停止这条消息,它是 TScaleChangedMessage。如果您能帮助我,我将不胜感激如何在我的应用程序中停止此消息。换句话说,我如何才能停止从普通样式更改为高分辨率样式
问问题
126 次
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 单元(以便它们也被重新编译),因为这个问题:
于 2017-09-18T09:10:09.953 回答
0
我找到了解决方案,更改此功能
function TMacWindowHandle.GetScale: Single;
begin
//Result := Wnd.backingScaleFactor
result := 1;
end;
将解决此问题:)
于 2017-09-18T20:50:55.880 回答