如何在ScaleChanged消息中停止更改firemonkey中的样式

时间:2017-09-17 09:18:47

标签: macos delphi firemonkey firemonkey-style

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

2 个答案:

答案 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单元(这样他们也可以重新编译),由于这个问题:

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

答案 1 :(得分:0)

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