首页 > 解决方案 > 如何检测 Delphi FireMonkey FMX 中的屏幕分辨率变化

问题描述

如何检测 Delphi FireMonkey / FMX 中的屏幕分辨率变化

这个 VCL 解决方案已经发布了 如何在 Delphi 中检测屏幕分辨率变化?

该解决方案适用于 VCL,但我正在寻找 FireMonkey 的解决方案。

标签: delphiwinapifiremonkeyscreen-resolution

解决方案


试试这个代码。首先将 FMX.Platform 添加到使用中:

function ScreenResolutionChanged(old, new: string): Boolean;
begin
  if old <> new then
    Result := True
  else
    Result := False;
end;

function getScreenSize: string;
var
  ScreenSvc: IFMXScreenService;
  ScreenSize: TSize;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService,
    IInterface(ScreenSvc)) then
  begin
    Result := Format('Resolution: %fX%f', [ScreenSvc.GetScreenSize.X,
        ScreenSvc.GetScreenSize.Y]);
  end;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  oldScreenSize, newScreenSize: string;
begin
  oldScreenSize := getScreenSize;
  Sleep(10000); // Wait 10 Sec
  newScreenSize := getScreenSize;
  if ScreenResolutionChanged(newScreenSize, oldScreenSize) then
    ShowMessage('Screen Resolution Changed ' + #10#13 + oldScreenSize + #10#13 +
      newScreenSize)
  else
    ShowMessage('Screen Resolution NOT Changed ' + #10#13 + oldScreenSize +
      #10#13 + newScreenSize);
end;

推荐阅读