Page 1 of 1

Evitar parpadeo al abrir varias ventanas child ( how to )

Posted: Sat Aug 16, 2008 3:49 am
by Raymundo Islas M.
Hola a todos

Tengo una ventana padre, y al momento de ejecutar la app debo abrir varias hijas al inicio, todo bien excepto que se produce un parpadepo segun se estan abriendo las demas ventanas, hay algo que se pueda hacer ?


:P
Esto me recuerda a aquellos dias de clipper cuando se usaba :

DispBegin(), DispEnd(), SaveScreen(), RestScreen()

:wink:


Saludos

Posted: Sat Aug 16, 2008 6:55 am
by Antonio Linares
Raymundo,

Puedes probar a ocultarlas todas con oMdiChild:Hide() y no mostrarlas hasta que no esten todas creadas.

Otra solución es crearlas en coordenadas fuera de la zona visible y luego cambiarlas de posición cuando ya estan todas credas.

Tambien comentarte que FiveWin implementa el equivalente a los legendarios DispBegin() y DispEnd() :-) pero no se si en este caso te serían de ayuda. Prúebalo :-)

Antes de empezar a crear las ventanas hijas llama a local aInfo := oMdiFrame:DispBegin() y despues de crear todas las ventanas hijas, llama a oMdiFrame:DispEnd( aInfo ) :-)

Posted: Sat Aug 16, 2008 7:47 pm
by Raymundo Islas M.
Hola Antonio,

Eso de generar la ventana en coordenadas negativas funciona muy bien, el detalle cuando quiere restaurarlas en la pocision correcta, me pinta solo la mitad de la misma.

checa la imagen

Image


Y asi es como lo estoy haciendo :

Code: Select all

DEFINE WINDOW oEmpWndPOS MDICHILD ;
	OF oMainRSWnd ;
	FROM -10,-10 TO -5,-5 PIXEL ;		//FROM 0,0 TO 680,1020 PIXEL ;
	TITLE "Modulo POS"  ;
	NOCAPTION BORDER NONE ;	
	BRUSH oDlgsBrsh ;
	MENUINFO 4

Code: Select all

ACTIVATE WINDOW oEmpWndPOS ;
	VALID ( oEmpWndPOS := NIL, .T. )

oEmpWndPOS:Move( 0,0,680,1020 )


Saludos

Posted: Sat Aug 16, 2008 7:53 pm
by Antonio Linares
Raymundo,

Prueba a añadir este parámetro:

oEmpWndPOS:Move( 0, 0, 680, 1020, .T. )

Posted: Sat Aug 16, 2008 8:03 pm
by Raymundo Islas M.
Gracias por tan pronta respuesta Antonio,

Probado, pero sigue igual.


Saludos

Posted: Sat Aug 16, 2008 8:16 pm
by Raymundo Islas M.
Antonio,

He aumentado el parametro :

oEmpWndPOS:Move( 0,0,680,1020,.T.)

a:

oEmpWndPOS:Move( 0,0,1100,1020,.T.)

Y ya me muestra la pantalla completa

No se la razon, pero al menos ya quedo !!!



Gracias


Saludos

Posted: Sat Aug 16, 2008 8:34 pm
by Antonio Linares
bien :-)

Re: Evitar parpadeo al abrir varias ventanas child ( how to )

Posted: Tue Sep 28, 2010 2:59 pm
by Willi Quintana
Holas...
Siempre he creado las MDI de esta manera:
se crea un ventana "pequeña", en el extremo superior de la pantalla, luego al tomar el tamaño del dialogo, no hay parpadeo,,, o al menos no se nota...

Code: Select all

DEFINE WINDOW oWndK MDICHILD FROM 0,0 to 2,2 OF oWnd ............
  DEFINE DIALOG oDlg,,,,,,,




ACTIVATE DIALOG oDlg CENTER NOWAIT ;
                ON INIT ( oDlg:Move( 0, 0 ) ;
               VALID  (oWndK:End(), lSalir )
                oWndK:bGotFocus  = { || oDlg:SetFocus() }
ACTIVATE WINDOW oWndK ;
               ON INIT (oWndK:Move(0,0), oWndK:SetSize( oDlg:nWidth, oDlg:nHeight ) ) ;   
               ON RESIZE (oWndK:SetSize( oDlg:nWidth, oDlg:nHeight ) ) ;
               VALID ( lSalir)
 
Seria de que prueben....

Salu2

Re: Evitar parpadeo al abrir varias ventanas child ( how to )

Posted: Wed Sep 29, 2010 1:20 pm
by Raymundo Islas M.
Willi,

Muchas gracias por el tip.


Saludos