Cómo centrar verticalmente un container en la pantalla?

138 views
Skip to first unread message

Ultraton500

unread,
Sep 1, 2014, 2:35:00 PM9/1/14
to publice...@googlegroups.com
Buenas tardes colegas,
Tengo en el form principal de mi aplicación (que ocupa toda la pantalla) un container y necesito centrarlo pero con respecto a la pantalla.
Lo primero que intenté fue 

THISFORM.container2.TOP=(SYSMETRIC(2)/2) - (THISFORM.container2.HEIGHT/2)

pero el problema de esto es que las coordenadas de la propiedad Top son con respecto al form y estas comienzan debajo del menú que a su vez está por debajo de la barra de título, por lo que no es efectivo utilizar esta propiedad.
Alguien conoce o se le ocurre alguna manera para situar un control en el centro vertical de toda la pantalla?

De antemano agradezco sus comentarios.

Saludos cordiales,
Javier.                                                                                                             

Víctor Hugo Espínola Domínguez

unread,
Sep 1, 2014, 2:55:11 PM9/1/14
to publice...@googlegroups.com
Hola Javier


Prueba en el Init del container:

This.Top  = (_Screen.Height - This.Height) / 2
This.Left = (_Screen.Width  - This.Width) / 2

Saludos,
Víctor.
Lambaré - Paraguay.

Ultraton500

unread,
Sep 1, 2014, 4:21:59 PM9/1/14
to publice...@googlegroups.com
Hola Victor Hugo, gracias una vez mas por tu tiempo.
Estuve midiendo con un programa de edición gráfica y lamentablemente el centrado no es exacto. Es mucho mas preciso en W7 en donde se desvía unos 7 u 8 pixeles y no tan preciso en Vista en donde se desvía 23 o 24 pixeles. No sé cómo reaccionará en XP o W8 o si tenga que ver con la altura de la barra o del menú, etc.

Es raro... la línea MESSAGEBOX(STR(_SCREEN.HEIGHT)) me devuelve 981px en una resolución de 1920x1080 y 773px en una resolución de 1440x900.
Sinceramente me pierden estos números.

De todas formas siempre agradecido por tu colaboración.

Saludos cordiales,
Javier.

ZeRoberto

unread,
Sep 1, 2014, 4:46:52 PM9/1/14
to publicesvfoxpro
Revisa SYSMETRIC() y añadale el borde

Ultraton500

unread,
Sep 2, 2014, 10:34:25 AM9/2/14
to publice...@googlegroups.com
Hola Ze Roberto, el problema no es el borde sino la barra de tìtulo y la barra del menú, sus alturas varían según la resolución y el s.o..
Hasta el momento estoy tratando de hacer un relevamiento de las distintas alturas como para hacer un promedio y aproximarme lo mas posible.
Gracias por el aporte.

Saludos,
Javier.

ZeRoberto

unread,
Sep 2, 2014, 12:02:08 PM9/2/14
to publicesvfoxpro
Alto del titulo SYSMETRIC(9)
Alto del Menu SYSMETRIC(20)

Saludos

Ultraton500

unread,
Sep 3, 2014, 12:36:00 AM9/3/14
to publice...@googlegroups.com
Muchas gracias Ze Roberto!! las funciones SYSMETRIC() son lo que estaba necesitando. Con ellas puedo hacer lo que quiero.
Saludos y perdón por demorarme en contestar pero es que tuve un percance impostergable.

Saludos cordiales,
Javier.
Reply all
Reply to author
Forward
0 new messages