スクリーンサイズを得るには?
VCL の場合だと、Screen 変数の Width とHeight を参照する事でスクリーンサイズを得られましたが、FireMonkey では Screen 変数の Size() を使います。
uses
..., FMX.Forms;
var
dSize: TSize;
begin
dSize := Screen.Size;
Edit1.Text := IntToStr(dSize.Width);
Edit2.Text := IntToStr(dSize.Height);
end;
|
XE3 の場合には TPlatformServices で IFMXScreenService を問い合わせることによって取得できます (XE4 以降でも使えます)。
uses
..., FMX.Platform;
procedure TForm1.Button1Click(Sender: TObject);
var
ScreenService: IFMXScreenService;
ScreenSize: TPointF;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
begin
ScreenSize := ScreenService.GetScreenSize;
Width := Trunc(ScreenSize.X);
Height := Trunc(ScreenSize.Y);
end;
end;
|
最初からサービスが利用可能だと判明している場合には TPlatformService のクラスメソッドを使って少し短く、かつ簡潔に記述できます。
uses
..., FMX.Platform, uPlatformService;
var
ScreenSize: TPointF;
begin
ScreenSize := TPlatformService.Get<IFMXScreenService>.GetScreenSize;
Width := Trunc(ScreenSize.X);
Height := Trunc(ScreenSize.Y);
end;
|
XE2 の場合には PlatForm 変数の GetScreenSize() メソッドで得る事ができます。
uses
..., FMX.Platform;
var
ScreenSize: TPointF;
begin
ScreenSize := Platform.GetScreenSize;
Width := ScreenSize.X;
Height := ScreenSize.Y;
end;
|
※ Platform 変数は XE3 (FM2) 以降では使えません。
See Also: