2 FORMS ACTIVOS A LA VEZ [SOLUCIONADO]

Manejo avanzado de múltiples interfaces en Visual FoxPro

Trabajar con varias interfaces de usuario es una necesidad común en la creación de aplicaciones robustas. Sin embargo, manejar múltiples formularios o interfaces de usuario en Visual FoxPro puede ser un desafío si no conocemos las herramientas y comandos adecuados para implementar esta funcionalidad de manera eficiente.

A continuación, exploraremos cómo se pueden desplegar y manejar efectivamente dos o más formularios al mismo tiempo dentro de una aplicación Visual FoxPro, sin que esto suponga un conflicto o un mal rendimiento del programa.

Creación de Formularios en Visual FoxPro

Antes de hablar sobre la sincronización de dos formularios, es importante saber cómo crear un formulario básico en Visual FoxPro. Para ello usualmente se utiliza el siguiente código:

	            DEFINE WINDOW MiPrimerFormulario FROM 1,1 TO 10,20 TITLE 'Mi Primer Form'
	            ACTIVATE WINDOW MiPrimerFormulario
	        

Este código sencillo permite abrir una pequeña ventana que puede servir como base para formularios más complejos.

Apertura de dos formularios simultáneamente

Para trabajar con dos formularios simultáneamente, se debe tener en cuenta que cada formulario debe tener su propia instancia y este enfoque puede manejar n-formularios. Veamos el siguiente ejemplo:

                DO FORM Formulario1
                DO FORM Formulario2 IN WINDOW (Formulario1)
            

Con este código, podemos abrir dos formularios: uno será el Formulario1 y el otro el Formulario2, ejecutándose en la ventana principal de Formulario1. Cada formulario se desarrolla de forma independiente pero con la posibilidad de estar activos simultáneamente.

Comunicación entre formularios

Una vez que hemos abierto múltiples formularios, muchas veces necesitamos que estos interfieran entre sí, compartiendo datos o eventos. Para ello, Visual FoxPro ofrece diversas maneras de comunicar formularios activos al mismo tiempo. Por ejemplo, podemos manipular propiedades de uno mediante referencias del otro:

                PUBLIC oForm1, oForm2
                oForm1 = CREATEOBJECT("Form")
                oForm1.CAPTION = "Formulario 1"
                oForm1.SHOW()
                oForm2 = CREATEOBJECT("Form")
                oForm2.CAPTION = "Formulario 2"
                oForm2.SHOW()
                
                * Ejemplo de referencia y modificación
                oForm1.cmdButton1.Caption = "Presiona aquí"
                oForm2.Height = oForm1.Height
            

En este trozo de código, mediante referencias públicas, es posible acceder a métodos y propiedades del primer formulario desde el segundo, y viceversa, para sincronizar comportamientos o compartir datos.

Utilización de Modalidad en Formularios

Es común que uno de los formularios se comporte como modal, es decir, tomando el foco absoluto de la aplicación hasta que se cierre. En FoxPro, establecer este comportamiento es posible activando la propiedad WindowType a Modal. Veamos a continuación:

                DEFINE WINDOW MiFormularioModal FROM 1,1 TO 10,20 ;
	                TITLE 'Formulario Modal' WINDOWTYPE Modal
                ACTIVATE WINDOW MiFormularioModal
            

Con este código, una vez que se activa el form modal, cualquier interactuación con otros formularios queda restringida hasta que se cierre el actual.

Solucionando posibles problemas de enfoque

Una de las complicaciones al trabajar con múltiples ventanas es mantener el control sobre qué formulario tiene el enfoque. Es deseable que el usuario tenga una experiencia fluida, pasando de un formulario a otro sin inconvenientes.

Para manejar el enfoque de los formularios, se pueden usar comandos o manipular eventos para asignar dinámicamente el enfoque al formulario deseado:

                * Asumiendo que oForm1 y oForm2 han sido inicializados previamente
                
                * Establecer el enfoque a oForm1
                oForm1.SetFocus()

                * En algún evento de oForm1 que necesite cambiar el foco a oForm2
                oForm2.SetFocus()
            

El método SetFocus es un recurso valioso para mantener bajo control el flujo de trabajo.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad