Visual Fox Pro, tengo problemas con los formularios

Soy realmente nuevo en la programación y me he interesado en programar aplicaciones en visual fox pro y tengo el siguiente problema, quiero tener una ventana principal donde aparezcan los demás formularios, a la ventana principal lo pongo como formulario de nivel superior y a los otros en formulario de nivel superior pero cuando corro la aplicación los formularios no se cierran aunque les aplique release y el formulario de nivel superior queda sin el control, en que estoy fallando

1 Respuesta

Respuesta

Algo tarde la respuesta hehe! Hace poco regrese al foro...! Yo hago así:

El formulario que hace de PRINCIPAL, debe tener las propiedades así: ShowWindow = 2 - As top level form, Windowtype = 0-Modeles

Los forms secundarios que vas a ocupar y que se mostraran sobre el principal, depende de como los vas a usar. Si un form secundario va a abrirse y mientras este abierto, va a trabar o a mantenerse solo el (osea que no podrás hacerle click ni manipular nada más mientras el este abierto sobre el principal) entonces establece ShowWindow = 1 In top level form y la propiedad WindowType = 1 - Modal. Así, si llamas al form, este va a "atascar" la ventana principal y solo estará disponible el en tiempo de ejecución.

Ahora... si deseas hacer un form principal y desde ahí llamar forms secundarios que puedan ser interactivos, es decir... abrís un form secundario haciendo click a un botón sobre el principal... y luego quieres llamar a otro form secundario pero que el secundario que anterior habías abierto se cierre y así tener solo 1 en pantalla SIN QUE SE TRABE la pantalla principal, entonces hace esto: en cada botón diferente que uses para abrir un form secundario, coloca al inicio del evento click de dicho botón esto:

**--Cerramos
FOR EACH oForm IN _Screen.Forms
IF oForm.Comment = "CLOSABLE"
oForm.Release()
EXIT
ENDIF
ENDFOR

DO FORM "nombredeform.scx" 

Ahora anda al form secundario y setea estas propiedades: 

Comment = CLOSABLE

ShowWindow = 1 

WindowType = 0 - Modeless

Y listo. Con esto logras tener ventanas "intercambiables"... osea a medida que llames a los forms secundarios... abrís uno... y si das click para abrir otro, el anterior se cierra y se abre el nuevo y así... no se traba el principal.

Otro tip: Para evitar que un mismo form se abra 2 veces: 

En el evento click del boton desde donde se llama al form secundario, coloca esto:

**--
IF WEXIST('viaticos')
ACTIVATE WINDOW viaticos
ELSE
DO FORM "viaticos.scx"
ENDIF
**--//

Acá, el form secundario se llama FÍSICAMENTE viáticos y su propiedad NAME también es viáticos. Activate window ocupa la propiedad NAME del form. Por eso debes asegurarte de setear siempre esa propiedad con el mismo nombre (yo aconsejo así) físico que le das al scx.! Con eso le decís que si la ventana viáticos esta abierta... solo la active en la pantalla principal.. y si no esta abierta, pues la llama con do form.. y listo.

Quizás te interese aprender a redimensionar forms para que se vean bien cuando los abrís en un form principal... y todos se abran y calcen en una misma intentar. Avisame y te ayudo.

No te desanimes... MS descontinuo foxpro pero Dios... que programa para ser bueno! Larga vida!

Cualquier cosa, avisa por acá! Es un placer colaborar y estar de regreso.

Un abrazo!

Desde Managua, Nicaragua!

Ravenn :D :D :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas