Page 1 of 1

Dialogos NoWait

Posted: Thu Mar 31, 2011 2:52 pm
by txon
Saludos:
Estoy preparando un programa en el que quiero usar dialogos NOWAIT, pero me surge un problema.
Hay una funcion en concreto en la que depende de una variable que se le pasa, debera abrir el dialogo como NOWAIT o no.

Hasta ahora lo he resuelto asi,

MiFuncion(oWin,lSel)

DEFINE DIALOG oDlg RESOURCE "MiVentana" OF oWin
*
Los objetos van aqui.
*
IF lSel
ACTIVATE DIALOG CENTER
ELSE
ACTIVATE DIALOGO CENTER NOWAIT
ENDIF

Existe alguna funcion de los dialogos en la que se pueda indicar si es NOWAIT o NO.

Algo asi como oDlg:lNowait:=.f.

Gracias de antemano por la ayuda.
Un saludo

Re: Dialogos NoWait

Posted: Thu Mar 31, 2011 2:59 pm
by Daniel Garcia-Gil
Saludos


podrias usar

Code: Select all

oDlg:Activate( , , , , , lSel )
puedes mirar dentro de fivewin.ch o dentro de dialog.prg para que veas cada uno de los parametros

Re: Dialogos NoWait

Posted: Thu Mar 31, 2011 7:07 pm
by txon
Daniel gracias por tu ayuda
Hice tal como me dijiste y funciona, no obstante ahora me encuentro con otro problema.
¿Como utilizo bValid y bInit, dentro de Activate()?

He hecho lo siguiente pero me da error al cargar el dialogo.
Error description: Error BASE/1002 No existe el alias: Cliente1

// Asi sí me funciona
ACTIVATE DIALOG oDlg CENTER ON INIT (lNew:=.f.,oDlg:aEvalWhen(),oRad:SetOption(2),CliAlta(dCli,lAlt,oBrw), ;
IIF((dCli)->(EOF()),EVAL(bCliVer),(oFol:SetOption(1),oFol:aEnable:={.t.,.f.,.f.,.f.,.f.},oBrw:SetFocus()))) ;
VALID (NoEscape() .AND. CierraCli(dCli,dAge,dBco,dGpo,dFpg,oBrw)) ;
NOWAIT

// Asi no me funciona
bInit:={|| (lNew:=.f.,oDlg:aEvalWhen(),oRad:SetOption(2),CliAlta(dCli,lAlt,oBrw),IIF((dCli)->(EOF()),EVAL(bCliVer),(oFol:SetOption(1),oFol:aEnable:={.t.,.f.,.f.,.f.,.f.},oBrw:SetFocus())))}
bValid:={|| (NoEscape() .AND. CierraCli(dCli,dAge,dBco,dGpo,dFpg,oBrw)) }
lCentered:=.t.
oDlg:Activate( , , ,lCentered,EVAL(bValid),lSel,EVAL(bInit) )


Gracias de antemano.

Re: Dialogos NoWait

Posted: Thu Mar 31, 2011 7:13 pm
by Daniel Garcia-Gil
Alfonso

pasas el codeblock no el "eval" de ellos, la clase se encarga internamente de evaluarlos

oDlg:Activate( , , ,lCentered, bValid, lSel, bInit )

Re: Dialogos NoWait

Posted: Thu Mar 31, 2011 7:28 pm
by txon
Daniel:
Perfecto, muchas gracias por tu tiempo.

Un saludo