Как я могу перестать менять стиль в firemonkey в сообщении ScaleChanged

Я использую Firemokey 10.2. В macOS, когда вы перемещаете ваш компьютер с обычного дисплея на сетчатку, он автоматически меняет стиль элементов управления. Я хотел бы остановить это сообщение, которое является TScaleChangedMessage. Я был бы признателен, если бы вы могли помочь мне, как я могу остановить это сообщение в моем приложении. Другими словами, как я могу перестать переходить от обычных стилей к стилям высокого разрешения?

2 ответа

Решение

Я нашел решение, изменив эту функцию function TMacWindowHandle.GetScale: Single; begin //Result := Wnd.backingScaleFactor result := 1; end;решит эту проблему:)

Самый простой способ - создать копию модуля 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

Другие вопросы по тегам