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