Screen.DesktopHeight と Screen.DesktopWidth を使用すると、「仮想」デスクトップのサイズを取得でき、1 つまたは複数のモニターで機能すると思います。
アプリケーションを閉じるときに、アプリケーションの位置 (上と左) とサイズ (高さと幅) をレジストリに保存します。開いたときに、表示領域の外に部分的に移動された可能性があるか、画面設定やモニターの削除などによって画面サイズが変更された可能性があるため、完全に表示されるようにしたいと考えています。
私は基本的にこのコードでそれを行うことができます:
if MyForm.Width > screen.DesktopWidth then
MyForm.Width := screen.DesktopWidth;
if MyForm.Height > screen.DesktopHeight then
MyForm.Height := screen.DesktopHeight;
if (MyForm.Left + MyForm.Width) > screen.DesktopWidth then
MyForm.Left := screen.DesktopWidth - MyForm.Width;
if MyForm.Left < 0 then MyForm.Left := 0;
if (MyForm.Top + LogoAppForm.Height) > screen.DesktopHeight then
MyForm.Top := screen.DesktopHeight - LogoAppForm.Height;
if MyForm.Top < 0 then MyFormTop := 0;
これは問題なく動作しますが、通常は (常にではありませんが) デスクトップの下部にあるタスクバーが考慮されていません。したがって、タスクバーがアプリケーションのウィンドウの邪魔になると、アプリケーションが見えなくなります。
タスクバーの位置を除いた画面の使用可能な位置とサイズの設定を取得するにはどうすればよいですか?