Con Screen.DesktopHeight y Screen.DesktopWidth, puedo obtener el tamaño del escritorio "virtual" y creo que funciona para uno o varios monitores.Cómo obtengo las coordenadas utilizables de la pantalla en Delphi
Guardo la posición (arriba y a la izquierda) y el tamaño (alto y ancho) de mi aplicación en el registro cuando se cierra. Cuando se abra, quiero asegurar que sea completamente visible, ya que puede haberse movido parcialmente fuera del área visible, o el tamaño de la pantalla puede haber cambiado, por ejemplo, a través de la configuración de la pantalla o la eliminación de un monitor.
Yo, básicamente, puede hacerlo con este código:
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;
Esto funciona bien, excepto que no tiene en cuenta la barra de tareas que es por lo general (pero no siempre) en la parte inferior del escritorio. Entonces, si la barra de tareas está en el camino de la ventana de mi aplicación, mi aplicación se oscurece.
¿Cómo puedo obtener la configuración de tamaño y posición utilizable de la pantalla que excluye la ubicación de la barra de tareas?
Gracias por la sugerencia. No da ningún detalle sobre cómo hacer esto, así que tendré que trabajarlo todo ... pero es la idea correcta. – lkessler