Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   TMainMenu mit aktiviertem GlobalUseGPUCanvas (https://www.delphipraxis.net/210003-tmainmenu-mit-aktiviertem-globalusegpucanvas.html)

CHackbart 16. Feb 2022 10:40

TMainMenu mit aktiviertem GlobalUseGPUCanvas
 
Hallo,

kann jemand mal bitte folgendes Gegentesten? GlobalUseGPUCanvas auf True setzen und ein einfaches Menü mit ein paar Untereinträgen auf das Hauptform setzen. Die Menüs werden abgeschnitten und zwar je mehr Root-Menüeinträge sind, desto kürzer werden die Untermenüs.

Das Problem scheint in FMX.Menus unter procedure TMenuView.DoRealign; zu liegen und zwar hier:

ContentR.BottomRight := TPointF.Create(Self.Width (*- P.X*), Self.Height - P.Y));

Wenn ich -P.X ausklammere funktioniert das Menü wie es soll. Das ganze tritt allerdings nur auf, wenn ich einen eigenen Style benutze. Ich fürchte das hat mit dem contentlayout zu tun. Das wird wohl nicht richtig berechnet.

CHackbart 16. Feb 2022 14:37

AW: TMainMenu mit aktiviertem GlobalUseGPUCanvas
 
Ich beantworte mir das mal selber,

das scheint nicht wirklich in dem Code zu liegen. Wenn man die Unterstützung für DPI deaktiviert, passen die Breiten.


Delphi-Quellcode:
procedure TMenuView.SetBounds(X, Y, AWidth, AHeight: Single);
{$IFDEF MSWINDOWS}
var
  ScreenService: IFMXScreenService;
  Scale: Single;
{$ENDIF}
begin
{$IFDEF MSWINDOWS}
 if GlobalUseGPUCanvas then
 begin
  if TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface(ScreenService)) then
  begin
    Scale := ScreenService.GetScreenScale;
    AWidth := AWidth * Scale;
    AHeight := AHeight * Scale;
  end;
 end;
{$ENDIF}
 inherited SetBounds(X, Y, AWidth, AHeight);
end;
Im Prinzip hilft obiger Code, aber das scheint nicht korrekt.

Christian

TurboMagic 16. Feb 2022 18:57

AW: TMainMenu mit aktiviertem GlobalUseGPUCanvas
 
Du hattest übrigens auch vergessen anzugeben welche Delphi version du benutzt.
In 11.0 haben Sie bei FMX gerade unter Windows von Pixelkoordinaten auf DP umgestellt.

CHackbart 17. Feb 2022 09:29

AW: TMainMenu mit aktiviertem GlobalUseGPUCanvas
 
Stimmt, mein Fehler ich nutze Delphi 11 (inkl. Oktober und November Patch). Hi-DPI geht mit Firemonkey auch unter Windows ganz gut, nur das Menü will bei aktivierter GloalUseGPUCanvas nicht richtig. Deswegen der obige Workaround. Was halt unschön ist, da man jedesmal eine lokale Kopie der jeweiligen Datei im Projektordner mitführen muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz