2017-09-17 4 views
0

J'utilise Firemokey 10.2. Dans macOS, en interne lorsque vous passez d'un affichage normal à un affichage rétine, il change automatiquement le style des contrôles. Je voudrais arrêter ce message qui est TScaleChangedMessage. J'apprécierais Si vous pouviez m'aider comment puis-je arrêter ce message dans mon application. En d'autres termes, comment puis-je arrêter de passer des styles normaux aux styles haute résolution?Comment arrêter de changer de style dans firemonkey dans le message ScaleChanged

Répondre

0

Je trouve la solution, changer cette fonction function TMacWindowHandle.GetScale: Single; begin //Result := Wnd.backingScaleFactor result := 1; end; va résoudre ce problème :)

0

La méthode la plus simple consiste à créer une copie de l'unité FMX.Platform.Mac et à modifier la méthode TFMXWindow.windowDidChangeBackingProperties afin que le message jamais envoyé, par exemple:

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; 

-à-dire tout commentaire tout ce qui en elle

Malheureusement, si vous utilisez Delphi 10.2 Mise à jour 1, cela signifie que vous devrez inclure toutes les unités FMX au chemin du projet (afin qu'ils soient également recompilés), en raison de ce problème:

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

+0

merci d'un million, mais malheureusement, les changements FireMonkey encore le style quand mon application fonctionne dans l'affichage de la rétine et commenter sur cette méthode ne résout pas mon problème :( – user1581036

+0

Votre question était: "Je voudrais arrêter ce message qui est TScaleChangedMessage. J'apprécierais Si vous pouviez m'aider comment puis-je arrêter ce message dans mon application. "J'ai répondu à votre question.Si vous éditez votre question, ma réponse est correcte. –