Delphiでディスプレイの解像度を取得するには?

ディスプレイの解像度を取得するには?

ディスプレイの解像度を取得する方法です。
Delphi XE3で確認しました。

VCLアプリケーションの場合

TScreenクラスはアプリケーション実行時の画面状態を表します。

TScreenオブジェクトは、グローバル変数Screenから取得します。

次のコードは、プライマリモニタの画面全体の幅と高さを取得します。

Memo1.Lines.Add('高さ = ' + IntToStr(Screen.Height));
Memo1.Lines.Add('幅  = ' + IntToStr(Screen.Width));

001

複数のディスプレイが接続されている場合

コンピュータに複数のディスプレイが接続されている場合には、ScreenクラスのMonitorsプロパティにより、すべてのディスプレイに関するScreenオブジェクトを取得することができます。

ディスプレイの数はScreen.MonitorCountプロパティで取得します。

var
  I: Integer;
  Monitor: TMonitor;
begin
  for I := 0 to Screen.MonitorCount - 1 do
  begin
    Monitor := Screen.Monitors[I];
    Memo1.Lines.Add('ディスプレイ = ' + IntToStr(I));
    if Monitor.Primary then
      Memo1.Lines.Add('主ディスプレイ');
    Memo1.Lines.Add('高さ = ' + IntToStr(Monitor.Height));
    Memo1.Lines.Add('幅  = ' + IntToStr(Monitor.Width));
  end;
end;

002

FireMonkeyアプリケーションの場合

FireMonkeyアプリケーションでは、IFMXScreenServiceのGetScreenSizeメソッドで、画面サイズを取得します。

アプリケーションを実行しているプラットフォームでIFMXScreenServiceをサポートしているかどうかは、TPlatformServices.Current.SupportsPlatformServiceメソッドで知ることができます。

var
  ScreenService: IFMXScreenService;
  ScreenSize: TPointF;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService,
    IInterface(ScreenService)) then
  begin
    ScreenSize := ScreenService.GetScreenSize;

    Memo1.Lines.Add('高さ = ' + FloatToStr(ScreenSize.X));
    Memo1.Lines.Add('幅  = ' + FloatToStr(ScreenSize.Y));
  end;
end;

003

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください