ディスプレイの解像度を取得するには?
ディスプレイの解像度を取得する方法です。
Delphi XE3で確認しました。
VCLアプリケーションの場合
TScreenクラスはアプリケーション実行時の画面状態を表します。
TScreenオブジェクトは、グローバル変数Screenから取得します。
次のコードは、プライマリモニタの画面全体の幅と高さを取得します。
Memo1.Lines.Add('高さ = ' + IntToStr(Screen.Height));
Memo1.Lines.Add('幅 = ' + IntToStr(Screen.Width));
複数のディスプレイが接続されている場合
コンピュータに複数のディスプレイが接続されている場合には、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;
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;