En una aplicaci贸n, periodicamente el usuario se conecta a un dispositivo externo, a traves de otra aplicaci贸n en JAVA.
Para esta conexi贸n, uso la siguiente instrucci贸n que funciona perfectamente. Mientras esta funcionando JAVA (oculto)
se mantiene la pantallita del MSgRun:
MsgRun ( cM[48], , {|oDlg1| WaitRun(cFile, 0) })
cFile es una llamada a un fichero bat con diferentes par谩metros.
La cuesti贸n es que a veces, la conexi贸n dura varios segundos y algunos usuarios son impacientes. Por ello he preparado otra funci贸n, donde mientras se ejecuta ocultamente la aplicaci贸n JAVA, aparece una pantallita con un TIMER.
El problema es que solo funciona correctamente cuando pulso el bot贸n CONECTAR y me gustaria que lo hiciera automaticamente, pero no lo consigo. He puesto en el ON INIT un codeblock, pero no marcha.
Este es el c贸digo de la funci贸n:
static function fTimer( cFile )
local oDlg, oProg, oTmr
DEFINE DIALOG oDlg TITLE "Conexi贸n dispositivo"
@ 1, 3 PROGRESS oProg POSITION 0 SIZE 120, 10
@ 2.5, 10 BUTTON "Conectar" ACTION (WaitRun( cFile, 0 ),oDlg:End()) // solo funciona cuando pulso AQUI
ACTIVATE DIALOG oDlg CENTER ;
ON INIT (oProg:SetRange( 1,995 ), Timer( oDlg, oProg, oTmr ), {|oDlg| WaitRun(cFile, 0) } )
RELEASE TIMER oTmr
return nil
// funcion auxiliar
static function Timer( oDlg, oProg, oTmr )
DEFINE TIMER oTmr INTERVAL 100 ;
ACTION ( oProg:nPosition += 5, ;
If( oProg:nPosition > 1000, oProg:nPosition:=0,)) OF oDlg
ACTIVATE TIMER oTmr
return nil
//////////////////////////////
驴Alguna idea?. Seria bueno, en mi opini贸n, que WAITRUN() contara, automaticamente con un TIMER.
Manuel