我使用的是Firemokey 10.2。在macOS中,当您从正常显示器移动到视网膜显示器时,它会自动更改控件的样式。我想停止这条消息,即TScaleChangedMessage。我很感激如果你能帮助我,我怎么能在我的应用程序中停止此消息。换句话说,如何停止从普通样式更改为高分辨率样式
答案 0 :(得分: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单元(这样他们也可以重新编译),由于这个问题:
答案 1 :(得分:0)
我找到了解决方案,
改变这个功能
function TMacWindowHandle.GetScale: Single;
begin
//Result := Wnd.backingScaleFactor
result := 1;
end;
将解决这个问题:)