Habe mich mal eben durch
Vcl.Menus durchdebuggt. Das Problem liegt tatsächlich daran, dass dort fälschlicherweise die PPI der Owner-Form genommen wird:
Delphi-Quellcode:
function TMenuItem.GetDevicePPI: Integer;
...
if (TWinControl(LParent.Owner).Handle > 0) and GetWindowPlacement(TWinControl(LParent.Owner).Handle, LPlacement) then
LMonitor := Screen.MonitorFromPoint(LPlacement.rcNormalPosition.CenterPoint)
else
LMonitor := Screen.MonitorFromWindow(Application.Handle);
if LMonitor <> nil then
Result := LMonitor.PixelsPerInch
else
Result := Screen.PixelsPerInch;
end
Ich glaube, dass man die PPI stattdessen vom Monitor der X/Y-Popup-Koordinaten beziehen müsste.
Hm ... lässt sich das jetzt irgendwie "austricksen" oder muss ich die
Vcl.Menus.pas patchen?