| Artículos | 01 FEB 1996

Curso de Programación con Delphi (7)

Tags: Histórico
Diálogos y aplicaciones multiformulario
Jaime Peña.

El empleo de cajas de diálogo (y de aplicaciones multiventana) es algo muy común en los programas Windows. Es difícil imaginar situaciones en las que no sean utilizadas.

En artículos anteriores hemos visto cómo crear formularios, como adjuntarles menús, atajos de teclado y funciones de respuesta; también hemos dado un repaso a los componentes (incluidos los controles estándares de Windows). En el presente artículo veremos las posibilidades de todo ello conjuntamente con el uso de cajas de diálogo y aplicaciones multiformulario.

Las cajas de diálogo (o cuadros de diálogo) son una de las características más habituales de cualquier aplicación Windows. Mediante ellas, usadas con sensatez y sin agobiar con contenidos excesivos, podremos dar a elegir opciones de trabajo a los usuarios, preguntar acerca de cómo queremos que se comporten nuestras aplicaciones y mostrar salidas simples de información.

Las aplicaciones multiformulario (con más de una ventana de aplicación), son cada día más utilizadas. A diferencia de una caja de diálogo, podremos mantener abiertas varias ventanas simultáneamente, en cada una de ellas podremos realizar operaciones diferentes y, en su caso, coordinarlas para que trabajen cooperativamente.

Desde un punto de vista de su esencia, no se diferencian excesivamente de una caja de diálogo, aunque sí lo hacen en cuanto a cometidos y a que no paralizan el trabajo en las restantes ventanas mientras permanecen a nuestra disposición, pudiendo pasarse de unas a otras sin más que hacer clic sobre ellas con el ratón, o utilizando los atajos de paso de unas a otras ventanas que Windows nos proporciona.

¿Cómo crear un nuevo formulario?

Una vez estemos trabajando con un proyecto, si precisamos un segundo o sucesivo formulario, podremos crearlo seleccionando la opción de menú File\New Form. Se despliega un asistente de la galería para creación de formularios; podrá seleccionar entre diversos modelos básicos de tipos de formularios. El formulario en blanco es el mismo que se muestra cuando se crea un nuevo proyecto en Delphi. Además hay siete tipos de plantillas de cajas de diálogo y un formulario referente a una aplicación SDI (Single Document Interface). Si muestra la ficha Experts (haciendo clic sobre su etiqueta en la pestaña inferior), verá dos tipos de expertos: para crear formularios de bases de datos y para ayudarle a crear diálogos personalizados.

Normalmente, si desea crear una aplicación que pueda utilizar diversas ventanas (aplicaciones multiformulario), seleccionará un formulario en blanco. Si lo que desea es una caja de diálogo, escogerá la que más se le parezca de las propuestas en las plantillas (Templates). Inmediatamente, verá la nueva ventana de diseño del formulario y, en el editor de códigos, encontrará una ficha con el código fuente de la unidad asociada. Si ve atestada su pantalla con múltiples formularios, recuerde que puede ir de unos a otros seleccionando la opción de menú View\Forms... o View\Units..., según quiera trabajar sobre la ventana de diseño o sobre el editor de código.

Cuando utilice botones de comando al estilo Borland (con la típica "V" o "X" gráficas y los textos OK o Cancel, o con textos como Yes o Help), que se insertan en ocasiones al usar la Template Gallery, no olvide traducir sus títulos en la propiedad Caption, de forma que se lean Aceptar, Cancelar, etc., respectivamente.

Si desea deshacerse de un formulario que haya creado en un proyecto, escoja la opción de menú File\Remove File y en la caja de diálogo etiquetada Remove from Project, resalte la unidad correspondiente y haga clic sobre el botón OK. Posteriormente, deberá retirar todas las referencias a esa unidad en los apartados uses de los restantes códigos fuente de las unidades de nuestro proyecto (véase más abajo).

También puede utilizar el botón con el signo menos ("-") que hay en la barra de acceso rápido, a la izquierda de la paleta de componentes. Note que sólo se retira el archivo del proyecto, pero aun seguirá en el disco (no se borrará), por si desea volver a utilizarlo, usando la opción de menú File\Add file (o el botón con el signo más en la barra de acceso rápido).

Particularidades de las cajas de diálogo

Las cajas de diálogo son, o siempre deberían ser, formularios modales. Esto es, cuando se despliegan no permiten realizar acciones en la aplicación hasta que se cierran. También es posible crear segundas ventanas de formulario (para aplicaciones multiformulario), incluyendo aquellas que permiten trabajar a modo de cajas de herramientas, que sean del tipo no modal (o en inglés modeless). Si es así, usted podrá tener desplegadas (abiertas simultáneamente) más de una ventana, e ir de una a otra sin más que activarla con un clic del ratón sobre ella.

Respecto a las ventanas de formulario modeless, no hemos de realizar mayores comentarios; se trabaja con ellas de igual manera que si sólo tuviéramos una. Lógicamente, sí hay que saber cómo poder desplegarlas desde una ventana principal y que propiedades no hemos de modificar, pero eso irá surgiendo en lo que sigue.

Cuando utilicemos un formulario como caja de diálogo (o cuadro de diálogo, como acostumbramos a leer), hemos de cuidar (si no lo ha hecho ya el asistente por nosotros) que algunas de sus propiedades y diseños sean los adecuados. Así, será conveniente o bastante razonable que fijemos los siguientes valores:

- La propiedad BorderStyle = bsDialog. Esto nos asegurará que su borde no será redimensionable, lo que podría descomponer su estética y ocultar parte de sus componentes.

- El código de llamada para ser mostrada como modal (véase más abajo), con el método ShowModal.

- Para crear una caja de diálogo, acuda a la opción de menú File\New Form... y allí seleccione uno adecuado, o utilice el experto correspondiente. Recuerde que puede utilizarse como base para una caja de diálogo cualquier tipo de formulario, por ejemplo uno en blanco, pero, en tal caso, deberá asegurarse de fijar usted mismo el estilo del borde e incluir los botones de comando adecuados.

- Si usa botones tipo BitBtn, la propiedad Kind ya le permite, automáticamente, escoger el icono adecuado y una función de respuesta coherente (sin codificar nada por su parte). Eso será especialmente útil con los tipos bkOK, bkCancel, bkYes, bkNo, bkClose y bkIgnore.

- Recuerde, como ya se advierte más arriba, de traducir las etiquetas de los botones BitBtn al castellano, modificando el contenido de la propiedad Caption en el inspector de objetos.

- Si hace una llamada no modal, mediante el método Show, las funciones de respuesta automáticas de los BitBtn no funcionarán y deberá codificarlas con un doble clic sobre el botón y escribirlas. Por ejemplo, usando el método Close para cerrar el formulario de la caja de diálogo.

Código de llamada a un formulario

Cuando deseamos desplegar un formulario desde otro, lo primero a tener en cuenta es que cada formulario se guarda en una unidad (Unit) particular, por lo que hemos de declarar la unidad correspondiente en el apartado Uses del código del formulario que lo va a llamar. Esto es, si creamos un nuevo formulario denominado EditorTexto, que lo guardamos en un archivo de unidad denominada UnitEdit, deberemos escribir este nombre de unidad en el apartado Uses de formulario que lo utiliza. Algo así como: Uses WinTypes, , UnitEdit;.

Si queremos abrir el formulario como modal, además de incluir su nombre de unidad en el correspondiente Uses, deberemos ejecutar el código que sigue, normalmente como respuesta a una opción de menú o al clic sobre un botón de comando, suponiendo que la caja de diálogo se defina con el nombre AboutBox: AboutBox.ShowModal;. Esto hará que se despliegue la caja de diálogo modal. Si, por el contrario, deseamos abrir una segunda ven

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información