画面の処理
アプリケーションの動作の制御 への移動
プロジェクトを作成すると、TScreen 型のグローバル変数 Screen が作成されます。 Screen は、ユーザーのアプリケーションが実行されているスクリーンの状態をカプセル化します。 Screen によって実行される一般的なタスクには次のものがあります:
- アプリケーションからアクセスできる複数のモニタのリストおよびパラメータの処理
- アプリケーションが動作しているウィンドウのサイズ
- 画面デバイスで利用可能なフォントのリスト
- カーソルの外観
VCL アプリケーションが複数のモニタで動作する場合、複数モニタ上のアプリケーション ユーザー インターフェイスのレイアウトは、VCL によって効果的に管理されます。たとえば、メニューやダイアログ ボックスやその他のポップアップ コントロールは、親フォームと同じモニタ上で開きます。Screen 変数を使用すると、モニタとそのサイズのリストを取得することができます。Monitors プロパティを使用するとデスクトップを構成するすべてのモニタにアクセスでき、MonitorCount はモニタの数を返します。すべての座標は主モニタからの相対座標です。たとえば、以下のような情報を取得することができます。
procedure TForm2.Button1Click(Sender: TObject);
var
I : integer;
ScreenCount : integer;
P: TPoint;
begin
Memo1.Clear;
ScreenCount := Screen.MonitorCount;
P := Mouse.CursorPos;
Memo1.Lines.Add('Monitor number: ' + IntToStr(ScreenCount) );
for I := 0 to ScreenCount-1 do begin
Memo1.Lines.Add('Screen.Width: ' + IntToStr(Screen.Width));
Memo1.Lines.Add('Monitor: '+IntToStr(Screen.Monitors[I].MonitorNum) );
Memo1.Lines.Add('Top: '+IntToStr(Screen.Monitors[I].Top) );
Memo1.Lines.Add('Left: '+IntToStr(Screen.Monitors[I].Left) );
Memo1.Lines.Add('Width: '+IntToStr(Screen.Monitors[I].Width) );
Memo1.Lines.Add('Height: '+IntToStr(Screen.Monitors[I].Height) );
Memo1.Lines.Add('MonitorFromRect(mdNearest): '
+ IntToStr( (Screen.MonitorFromRect(
TRect.Create(P,100,100), mdNearest)).MonitorNum) );
Memo1.Lines.Add( 'Mouse.CursorPos: ' + IntToStr(P.X)
+ ' ' + IntToStr(P.Y) );
end;
end;