Actualizado: 01/Abr/2001
Una características que muchos programadores de Visual Basic hemos deseado ver, entre otras, es la posibilidad de ajustar automáticamente la posición de los controles de un formulario al redimensionarlo. Hasta ahora hemos tenido que hacerlo de forma manual, pero esto es una trivialidad en la nueva versión de Visual Basic, gracias a la propiedad Anchor de los controles.
Mediante esta propiedad podemos indicar en que posición queremos "anclar" cada uno de los controles.
Por ejemplo, si queremos que un control se ajuste al ancho del formulario, pero permanezca en la misma posición de izquierda y arriba, sólo tenemos que darle el valor Top, Left y Right a la propiedad Anchor del control en cuestión.
Por otro lado, si queremos que un control se ajuste al tamaño completo del formulario, pero que la separación con respecto a los controles que estén a su izquierda, derecha, arriba y abajo permanezcan inalterables, asignaremos los cuatro valores de la propiedad Anchor: Top, Left, Right y Botton.
Es decir, podemos hacer que un control se ajuste de forma automática al tamaño del formulario y a la posición (o separación) con respecto a otros controles. Todo esto lo veremos a continuación.Otra característica que ahora tienen los formularios es poder indicarle el tamaño mínimo y máximo que queremos que tenga. Esto se consigue mediante las propiedades: MinimumSize y MaximumSize. No es necesario indicarle el tamaño a las dos propiedades, por ejemplo si lo que queremos es que nuestro formulario no pueda ser menor de 300x200, asignaremos el valor 300 a MinimumSize.Width y 200 a MinimumSize.Height.
En este ejemplo también veremos otras de las cosillas que tienen los controles ListBox es por ejemplo el mostrar el scroll horizontal, cosa que antes había que hacer mediante una llamada al API de Windows y que ahora se consigue asignando un valor True a la propiedad HorizontalScrollbar.
Aquí tienes dos capturas del formulario de prueba, una con el tamaño asignado en tiempo de diseño y el otro al cambiar el tamaño:
Tamaño original.
Después de cambiar el tamaño.Estos son los valores asignados a Anchor de cada uno de los controles del formulario:
(por defecto, están asignados los valores Top y Left, por tanto no es necesario asignar estos valores a los controles que queremos que estén anclados sólo en esas dos posiciones, tal es el caso de la etiqueta que muestra el texto Fichero:)' Asignar los valores de Anchor en tiempo de ejecución: ' Aunque es recomendable hacerlo en tiempo de diseño, ' ya que así también se ajusta el tamaño y posición de los controles ' en tiempo de diseño. ' ' txtFileName se ajustará al ancho del formulario Me.txtFileName.Anchor = AnchorStyles.Top BitOr AnchorStyles.Left BitOr AnchorStyles.Right ' btnBrowse y btnOpen se posicionarán a la derecha del formulario, ' pero no cambiarán de tamaño Me.btnBrowse.Anchor = AnchorStyles.Top BitOr AnchorStyles.Right Me.btnOpen.Anchor = AnchorStyles.Top BitOr AnchorStyles.Right ' btnExit también permanecerá a la derecha del formulario, ' pero se ajustará en la parte inferior del mismo. Me.btnExit.Anchor = AnchorStyles.Bottom BitOr AnchorStyles.Right ' lstLines se ajustará al tamaño del formulario, ' pero permanecerá en la posición relativa con respecto a ' los controles que tiene arriba y a su derecha. Me.lstLines.Anchor = AnchorStyles.Top BitOr AnchorStyles.Left BitOr AnchorStyles.Right BitOr AnchorStyles.BottomNota: Estos valores se pueden asignar en tiempo de ejecución y también se pueden asignar en tiempo de diseño.
Cuando se hace en tiempo de diseño, usando la propiedad Anchor de la ventana de propiedades, la cual muestra algo parecido a esto:
La propiedad Anchor de la ventana de propiedades.
La ventaja de asignar estos valores en tiempo de diseño es que si cambiamos el tamaño del formulario, los controles también se ajustan al nuevo tamaño que le demos tanto en tiempo de diseño como en ejecución.
La verdad es que la nueva versión de Visual Basic pone a nuestra disposición muchas características que las versiones anteriores "deberían" haber tenido desde hace tiempo, pero... ¡más vale tarde que nunca!
¡Que las disfrutes!
Nos vemos.
Guillermo