In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Buscando una "tecnica" de pintado de pantallas

Foro público de Xailer en español
gabo1
Posts: 52
Joined: Mon Oct 13, 2014 9:42 am

Buscando una "tecnica" de pintado de pantallas

Postby gabo1 » Thu Aug 02, 2018 1:47 am

Hola..
Tengo una aplicacion 100% para entorno Touch, con muchos botones la aplicacion está en produccion funcionando sin ningun problema.. pero he detectado que en el pintado de pantalla se ve como se crean todos los botones y equipos no potentes no actuales se ve hasta un fondo opaco..
El funcionamiento es el siguiente, Tengo una pantalla principal el cual abre ventanas para rellenar los datos del archivo maestro y despues abro una ventana con muchos botones para capturar el detalle de productos lo que hago es lo siguiente
1. Cada vez que tengo que capturar el detalle de los productos creo la ventana

Code: Select all

  En esta ventana se inicializa a ceros todas las variables
  WITH OBJECT oWinComanda:= TFormComandaPC()
       :lSysMenu:= .F.
       :lMaximizeBox:= .F.
       :lMinimizeBox:= .F.
       :nBorderStyle:= bsNONE
       :nShowMode:= smMAXIMIZE
       :New( Self )
       :ShowModal()
       IF :nModalResult == mrOK
          ::TotalesMesa()
       ENDIF
  END WITH

Capturo los productos y cierro con "CLOSE" la ventana y vuelve lo mismo
La pregunta es.. Existe alguna forma que se pinte de manera Rapida para que no se vea el despliegue o la creacion de todos los controles
existira algo parecido a DispBegin-DispEnd de clipper o alguna otra tecnica que se pueda mejorar el pintado de las pantalla?
Saludos y espero que alguien me pueda orientar
User avatar
XeviCOMAS
Posts: 439
Joined: Sat Mar 12, 2011 8:16 pm

Re: Buscando una "tecnica" de pintado de pantallas

Postby XeviCOMAS » Thu Aug 02, 2018 10:01 am

Yo lo que hago... en cuanto me encuentro con problemas de que no quiero "esperar" los resultados y mostrar la ventana "de golpe", es crearla en unas coordenadas "inexistentes"... o sea nTop -500, por ejemplo, esperar un segundo o dos, y colocar nTop en el sitio que le corresponda.

Igual te puede servir.
Un Saludo,
Xevi.
gabo1
Posts: 52
Joined: Mon Oct 13, 2014 9:42 am

Re: Buscando una "tecnica" de pintado de pantallas

Postby gabo1 » Thu Aug 02, 2018 5:43 pm

Xavi..
Me puedes mostrar un ejemplo por favor.. no capto eso de esperar unos segundos

Saludos!
User avatar
XeviCOMAS
Posts: 439
Joined: Sat Mar 12, 2011 8:16 pm

Re: Buscando una "tecnica" de pintado de pantallas

Postby XeviCOMAS » Sun Aug 05, 2018 9:13 pm

Code: Select all

  En esta ventana se inicializa a ceros todas las variables
  WITH OBJECT oWinComanda:= TFormComandaPC()
       :lSysMenu:= .F.
       :lMaximizeBox:= .F.
       :lMinimizeBox:= .F.
       :nBorderStyle:= bsNONE
       :New( Self )
       :nTop := -500
       :ShowModal()
       Sleep(3000)
       :nShowMode:= smMAXIMIZE
       IF :nModalResult == mrOK
          ::TotalesMesa()
       ENDIF
  END WITH


Puedes provar...
Un Saludo,
Xevi.
User avatar
jfgimenez
Site Admin
Posts: 5570
Joined: Mon Apr 06, 2015 8:48 pm
Contact:

Re: Buscando una "tecnica" de pintado de pantallas

Postby jfgimenez » Mon Aug 06, 2018 5:32 pm

Xevi,

tal y como lo has puesto no puede funcionar por dos motivos:

1) Al llegar a la línea de :ShowModal(), se muestra la ventana (en este caso en :nTop -500), y la siguiente línea no se ejecuta hasta que se cierra la ventana. Por lo tanto, al usuario le parecerá que el programa está colgado, porque no responde a las ventanas que puede ver porque el foco está en una ventana que queda fuera de la pantalla

2) La función Sleep() produce una pausa de n milisegundos, pero mientras tanto el programa está completamente "congelado", y no responde a nada ni ejecuta nada. Entiendo que lo que te interesa es que e siga ejecutando el código que crea o carga de datos los controles.

En cualquier caso, la técnica que propones se puede implementar muy fácil sobrecargando el método Show() del formulario, así:

Code: Select all

METHOD Show( nShowMode, lCenter ) CLASS TForm1
   ::nTop -= 500
   ::Super:Show( nShowMode, lCenter )
   ::nTop += 500
RETURN Nil


Y esta implementación es compatible tanto con :Show() como con :ShowModal(). Pero ojo, sólo hay que sobrecargar el método Show(), no ShowModal()
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
User avatar
XeviCOMAS
Posts: 439
Joined: Sat Mar 12, 2011 8:16 pm

Re: Buscando una "tecnica" de pintado de pantallas

Postby XeviCOMAS » Mon Aug 06, 2018 8:16 pm

José,

No me havia dado cuenta del ShowModal()...
Donde lo estoy utilizando es en NoModales.
TOMO NOTA !!!

Gracias.
Un Saludo,
Xevi.

Return to “Spanish”