AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung TMainMenu mit aktiviertem GlobalUseGPUCanvas
Thema durchsuchen
Ansicht
Themen-Optionen

TMainMenu mit aktiviertem GlobalUseGPUCanvas

Ein Thema von CHackbart · begonnen am 16. Feb 2022 · letzter Beitrag vom 17. Feb 2022
Antwort Antwort
CHackbart

Registriert seit: 22. Okt 2012
260 Beiträge
 
#1

TMainMenu mit aktiviertem GlobalUseGPUCanvas

  Alt 16. Feb 2022, 10:40
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.

Geändert von CHackbart (16. Feb 2022 um 10:48 Uhr)
  Mit Zitat antworten Zitat
CHackbart

Registriert seit: 22. Okt 2012
260 Beiträge
 
#2

AW: TMainMenu mit aktiviertem GlobalUseGPUCanvas

  Alt 16. Feb 2022, 14:37
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

Geändert von CHackbart (16. Feb 2022 um 14:50 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#3

AW: TMainMenu mit aktiviertem GlobalUseGPUCanvas

  Alt 16. Feb 2022, 18:57
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.
  Mit Zitat antworten Zitat
CHackbart

Registriert seit: 22. Okt 2012
260 Beiträge
 
#4

AW: TMainMenu mit aktiviertem GlobalUseGPUCanvas

  Alt 17. Feb 2022, 09:29
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 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