25 octubre 2007

Heredando la pura guapura…

Algo que me da mucha flojera al programar con Visual Basic 6 o 2005 es el tener que dibujar interfaces de las ventanas (o formularios o formas, como dicen algunos porque por defáult se llaman Form1, Form2, etc.). Es muy importante tardar un rato diseñando el interfaz porque de eso depende que el usuario pueda y quiera usar tu programa, si le es de utilidad y, si es tu caso, si te lo compra. Es importante que no solo sea bello, sino funcional (hace tiempo escribí un artículo sobre las interfaces gráficas, o GUIs, que puedes ver aquí).

Lo peor de este rollo es cuando tienes que dibujar otra ventana que es muy similar a otra. O una de dos: o creas otra ventana y la dibujas de nuevo, o copias el archivo de la ventana (en VBasic 6 tiene la extensión .frm) y lo pegas con otro nombre e importas este nuevo archivo a tu proyecto. Cualquiera de las dos alternativas no es muy natural que digamos y, si estoy usando un lenguaje quesque orientado a objetos (digo quesque porque el único lenguaje de programación que conozco que totalmente orientado a objetos es el SmallTalk), debería poder aprovechar la herencia para evitar andar repitiendo cosas. Si no, ¿para qué me sirve la OOP (programación orientada a objetos)?

¡Buenas noticias! La gente de Microsoft ha escuchado las plegarias de muchos programadores y han agregado una manera “natural” de crear formas similares: la herencia visual. En este artículo, voy a explicar como es que se heredan las ventanas.

Para explicar esto, voy a hacer un programa muy sencillo: una ventana con una etiqueta, una caja de texto y dos botones. Luego, voy a agregar una ventana (o formulario) heredado para que se vea como heredo la interfaz.

Para iniciar, creo un nuevo proyecto y diseño mi Form1 de esta manera:


Voy a agregar código al botón Salir (Button2) que haga que el programa se excite (o sea, haga un Exit): le incluyo la instrucción End. Para poder heredar esta forma, es necesario generar el proyecto (si no se compila Form1, no se puede heredar). Para hacerlo fácil, me voy al menú Generar y escojo la opción Generar HerenciaVisual:


Ahora sí, vamos “tirando rostro”. Para heredar Form1, me voy al menú Proyecto (también puedo hacer clic derecho sobre el nombre de la solución, en este caso HerenciaVisual, y salen las mismas opciones) y selecciono la opción Agregar Clase… como se ve en la siguiente figura:


Al hacer esto, aparece la siguiente ventana, donde vamos a seleccionar la opción Formulario heredado:


Después de esto, te aparece una ventana como esta:


En dado caso que no te aparezca así, vuelve a generar el proyecto. Ahora selecciono la opción Aceptar para decirle que herede la ventana Form1 (en mi caso, la única que existe). En este momento, mi explorador de soluciones me aparece Form2, como se ve aquí:


Y Form2 se ve así:


Fíjate que los controles de Form2 tienen un signo chiroliro en su esquina superior izquierda, como dos cajitas con una flechita. Eso indica que el control está heredado.

Para terminar, fíjate que al seleccionar uno de los controles, te aparece un candado que indica que no lo puedes eliminar. En Form2, seleccioné el primer botón, Button1, y el “candadito” se ve así:


Tampoco se puede agregar código a los controles. Si le das doble clic al control, no se abre la ventana de código ni nada. Abrí el código desde el botoncito de código que está en la ventana de soluciones. Si te fijas, no me aparecen los controles heredados:


En conclusión, puedes heredar controles pero no su código. Esto te ahorra mucha lata. Se puede hacer una ventana “base” y heredar las partes comunes a muchas ventanas y en cada una agregarle “el saborcito” individual. Espero que esto les ahorre lata y trabajo extra. Si quieres agregar algo acerca de tus propias experiencias con la heredada de “guapuras”, de sus interfaces gráficos chiroliros, deja un comentario. ¡Hasta la próxima!
Publicar un comentario
Related Posts Plugin for WordPress, Blogger...