Centrar elementos de formulario en pantalla completa

Esta es mi primera consulta. Ojalá lo haga bien. Verán, creo un formulario en blanco, agrego algunos controles, no se, cuadros combinados, etiquetas, cajas de texto, y las ordeno para que queden como me agrada. Configuro el formulario para que sea emergente. Ejecutó la vista de formulario y se ve bien. Habilito la opción de centrado automático y al ejecutarlo y maximizar el formulario, todos los controles que he agregado mantienen su orden PERO se ubican muy cercano a la esquina superior izquierda. Pregunta ¿se puede lograr que cuando se maximice el formulario, todo quede en el centro como si hubiese puesto la pantalla en blanco y el formulario creado en medio? Mi formulario tiene 12cm de ancho y pese a todo lo que le he mencionado, no logro que se ubique en medio de la pantalla. Ojo, hablo del total del formulario creado. Es como cuando uno esta viendo un vídeo o algo similar y va por "pantalla completa" y todo se mantiene centrado y manteniendo el orden inicial, pero no pasa lo mismo con mi formulario.

1 Respuesta

Respuesta

No hay una forma "sencilla" de hacer lo que pides, o al menos yo nunca la he visto. Sin embargo, te voy a dar un par de alternativas, a ver si te sirve alguna:

1º/ Usar el método explicado aquí: http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/formularios/93-ejemplos-explicados/ejemplos-de-formularios/170-modificar-la-escala-de-un-formulario 

2º/ Diseñar tu formulario con un tamaño más grande, para que al maximizarlo, te quede más centrado. Es decir, si tu formulario, sin maximizar, tiene 12 cm de ancho, y maximizado, tiene, por ejemplo 24 cm, lo abres en vista diseño, le amplias el área el formulario a los 24 cm, y colocas los controles de tal forma que queden más o menos centrados.

3º/ Dejar el formulario como lo tienes diseñado actualmente, y que al abrirlo se maximice y se recoloquen los controles. Esta opción es algo más liosa, porque tienes que ir programando cada control individualmente.

Este código lo tendrías que colocar en el evento Al Cargar del Formulario. Para ello, abres el formulario en vista diseño, sacas sus propiedades con el botón derecho del ratón, te vas a la pestaña Eventos, localizas la fila del evento "Al Cargar", y pulsas el botón con los 3 puntos que hay a la derecha. De las 3 opciones que te salen, eliges "Generador de código" y se te abre el editor de código VBA.

Para maximizar el formulario usas: DoCmd. Maximize

Con Me.Me.InsideWidth, conoces el ancho del formulario, que si lo maximizas al cargarlo, te dará el ancho de la pantalla. Ten en cuenta que la medida la da en twips (1cm=567 twips)

Si quieres centrar, por ejemplo, un boton "cmdCerrar", que tiene un ancho de 2 cm, harías:

Me.cmdCerrar.Left = (Me.InsideWidth / 2) - 567

Es decir, le cambias su propiedad Left, que indica la distancia desde el borde izquierdo del formulario a la izquierda del control, y se la ajustas a la mitad del ancho del formulario menos la mitad del ancho del botón (en este caso 1 cm o 567 twips)

Y así lo harías con todos. Es sencillo, pero trabajoso, pues exige ir haciendo múltiples pruebas para que el resultado sea el deseado.

Para centrarlos verticalmente, usarías Me.InsideHeight (y si tienes encabezado y/o pie del formulario también Me.EncabezadoDelFormulario.Height y Me.PieDelFormulario.Height) para conocer el alto, y para colocar los controles, usarías la propiedad Top (Me.cmdCerrar.Top=....)

En resumen, que el código te quedaría algo así:

Private Sub Form_Load

DoCmd.Maximize  'Maximizas el formulario

'Colocas los controles

Me.Control01.Left=...

Me.Control01.Top=...

Me.Control02.Left=...

Me.Control02.Top=...

...

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas