Как я могу перестать менять стиль в 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 в путь проекта (чтобы они также перекомпилировались) из-за этой проблемы: