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.

Tengo problemas con repintado usando TProcess

Foro de Xailer profesional en español
Responder
Avatar de Usuario
Carlos Ortiz
Mensajes: 873
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Tengo problemas con repintado usando TProcess

Mensaje por Carlos Ortiz »

Arme un menu en xailer y en algunas opciones del mismo llamo a programas en
xailer, en otros casos llamo ejecutables que tengo en Fivewin y quiero
usarlos asi hasta que los pase a xailer, el tema se produce al mover la
ventana (pinta caracteres de los bordes y se ensucia todo bastante feo) con
el exe externo llamado desde un objeto tprocess, con execute() pasa lo mismo
si le pongo la clausula lWait en .t. en cualquiera de los dos casos para que
se detenga hasta que salga, si la clausula esta en .f. anda bien solo que
pueden salir del menu y dejar todos los otros ejecutables en funcionamiento.
Gracias y Salu2.
notengo
Mensajes: 417
Registrado: Vie Oct 12, 2007 1:29 pm

Tengo problemas con repintado usando TProcess

Mensaje por notengo »

Carlos,
la propiedad lWait sólo deberí­a utilizarse en procesos muy rápidos.
Intenta darle tiempo al procesador para pueda procesar todos los mensajes
que recibe del sistema.
WITH OBJECT TProcess...
:cName := ...
:Run()
WHILE :IsRunning()
SysRefresh()
END
END
Saludos,
José Lalí­n
Avatar de Usuario
Carlos Ortiz
Mensajes: 873
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Tengo problemas con repintado usando TProcess

Mensaje por Carlos Ortiz »

Gracias Jose,
no surte efecto sigue repintando mal.
Este el codigo que llama a un exe externo
METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS TInicio
WITH OBJECT ::TProcess:=TProcess()
::TProcess:cName := "assistcuponescupones.exe"
:lWait := .t.
:Run()
WHILE :IsRunning()
:SysRefresh()
END
END WITH
notengo
Mensajes: 417
Registrado: Vie Oct 12, 2007 1:29 pm

Tengo problemas con repintado usando TProcess

Mensaje por notengo »

Carlos,
> :lWait := .t.
¿ Has probado sin esta lí­nea ? Date cuenta que le estás diciendo al sistema
que ejecute el proceso y no retorne a la aplicación que lo llama, por tanto
el bucle que tienes después nunca se ejecuta.
Saludos,
José Lalí­n
Avatar de Usuario
Carlos Ortiz
Mensajes: 873
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Tengo problemas con repintado usando TProcess

Mensaje por Carlos Ortiz »

Si justamente esa es la idea, llamar a otra aplicacion, aplicación
desarrollada en fivewin que por ahora no adaptare a xailer, quiero
ejecutarla desde el menu en xailer que funcione como un dialogo y que tengan
que cerrarla para luego poder continuar con otras opciones del menú que si
ya están en xailer.
Atte. CO. y muchas gracias, si tenes alguna idea de como me conviene llamar
a exes externos o cerrandolos desde xailer al salir tambien seria de mucha
ayuda.
Nuevamente gracias.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Tengo problemas con repintado usando TProcess

Mensaje por jfgimenez »

Carlos,
> Si justamente esa es la idea, llamar a otra aplicacion, aplicación
> desarrollada en fivewin que por ahora no adaptare a xailer, quiero
> ejecutarla desde el menu en xailer que funcione como un dialogo y que
> tengan que cerrarla para luego poder continuar con otras opciones del menú
> que si ya están en xailer.
>
> Atte. CO. y muchas gracias, si tenes alguna idea de como me conviene
> llamar a exes externos o cerrandolos desde xailer al salir tambien seria
> de mucha ayuda.
Lo mejor que puedes hacer es ejecutar el segundo programa y desactivar la
ventana principal mientras esté corriendo. Sería algo así:
METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS TInicio
WITH OBJECT ::TProcess:=TProcess()
::TProcess:cName := "assistcuponescupones.exe"
:lWait := .t.
:Run()
Application:oMainform:Disable()
WHILE :IsRunning()
:SysRefresh()
END
Application:oMainform:Enable()
END WITH
De esta forma dejas que el programa responda a los mensajes de windows
(incluidos los de pintado) al tiempo que impides que el usuario pueda hacer
click e interactuar con tu programa.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder