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
Responder
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Buscando una "tecnica" de pintado de pantallas

Mensaje por gabo1 »

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

Código: Seleccionar todo

  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
Avatar de Usuario
XeviCOMAS
Mensajes: 586
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Buscando una "tecnica" de pintado de pantallas

Mensaje por XeviCOMAS »

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.
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: Buscando una "tecnica" de pintado de pantallas

Mensaje por gabo1 »

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

Saludos!
Avatar de Usuario
XeviCOMAS
Mensajes: 586
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Buscando una "tecnica" de pintado de pantallas

Mensaje por XeviCOMAS »

Código: Seleccionar todo

  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.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Buscando una "tecnica" de pintado de pantallas

Mensaje por jfgimenez »

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í:

Código: Seleccionar todo

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
Avatar de Usuario
XeviCOMAS
Mensajes: 586
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Buscando una "tecnica" de pintado de pantallas

Mensaje por XeviCOMAS »

José,

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

Gracias.
Un Saludo,
Xevi.
Responder