С помощью Screen.DesktopHeight и Screen.DesktopWidth я могу получить размер «виртуального» рабочего стола и считаю, что он подходит для одного или нескольких мониторов.
Я сохраняю позицию (вверху и слева) и размер (высоту и ширину) моего приложения в реестре, когда оно закрывается. Когда он открывается, я хочу убедиться, что он полностью виден, поскольку он мог быть частично перемещен за пределы видимой области или размер экрана мог измениться, например, из-за настроек экрана или удаления монитора.
Я могу сделать это с помощью этого кода:
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;
Это работает нормально, за исключением того, что не учитывает панель задач, которая обычно (но не всегда) находится внизу рабочего стола. Поэтому, если панель задач находится на пути окна моего приложения, мое приложение скрывается.
Как я могу получить полезные настройки положения и размера экрана, исключающие расположение панели задач?