FoxPro/Visual FoxPro - Saber cuando se maximiza la ventana principal de Visual FoxPro

 
Vista:

Saber cuando se maximiza la ventana principal de Visual FoxPro

Publicado por Juan (230 intervenciones) el 27/12/2012 09:55:35
Buenos días, tengo un formulario sin borde ni título, los botones de maximizar, minimizar, etc... son los de la ventana principal de Visual FoxPro, y me gustaría saber si hay alguna forma de saber cuando se pulsa el botón de maximizar, minimizar, etc...

Se que "_screen.windostate=2" es maximizado, pero donde está el evento que controla y así de esa forma saber en el momento que se ha pulsado.

El formulario no hace nada, ni refresh, ni paint, ni nada de nada cuando se pulsa ese botón.

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Saber cuando se maximiza la ventana principal de Visual FoxPro

Publicado por Fidel (657 intervenciones) el 27/12/2012 20:25:26
Al maximizar ó minimizar la ventana principal de VFP, se dispara el evento _Screen.Moved. Como no tienes acceso a programar dicho evento, debes recurrir a la función BINDEVENTS().
Puedes hacer algo como esto.
Incorpora la rutina TelScreen en algún procedimiento (o en el programa principal).
Para probar, puedes hacerlo desde la ventana de comandos, escribiendo TelScreen() +[enter] y luego minimiza y maximiza la ventana.
Luego cambia el procedure SayState para lo que quieras hacer y lo convocas en el Load de tu formulario principal.

PROCEDURE TelScreen()
**********************
PUBLIC oHandler
oHandler=NEWOBJECT("myhandler")
BINDEVENT(_SCREEN,"Moved",oHandler,"sayState")

DEFINE CLASS myhandler AS Session

PROCEDURE sayState
LOCAL nw,lc
nw=_Screen.WindowState
DO case
CASE nw=0
lc="Normal"
CASE nw=1
lc="Minimizado"
CASE nw=2
lc="Maximizado"
OTHERWISE
lc="Desconocido"
ENDCASE
MESSAGEBOX(lc)
RETURN
ENDDEFINE

Para desactivar el procedimiento de BindEvents
UNBINDEVENTS(_screen)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar