Page 1 of 1

Buscando una "tecnica" de pintado de pantallas

Posted: Thu Aug 02, 2018 1:47 am
by 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

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

Re: Buscando una "tecnica" de pintado de pantallas

Posted: Thu Aug 02, 2018 10:01 am
by 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.

Re: Buscando una "tecnica" de pintado de pantallas

Posted: Thu Aug 02, 2018 5:43 pm
by gabo1
Xavi..
Me puedes mostrar un ejemplo por favor.. no capto eso de esperar unos segundos

Saludos!

Re: Buscando una "tecnica" de pintado de pantallas

Posted: Sun Aug 05, 2018 9:13 pm
by XeviCOMAS

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...

Re: Buscando una "tecnica" de pintado de pantallas

Posted: Mon Aug 06, 2018 5:32 pm
by 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í:

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()

Re: Buscando una "tecnica" de pintado de pantallas

Posted: Mon Aug 06, 2018 8:16 pm
by XeviCOMAS
José,

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

Gracias.