Page 1 of 1

Problemas con edición

Posted: Fri Oct 19, 2007 2:41 pm
by horacio
Tengo el siguiente código

/******************/
Local nValor := 0
Local oGet
Local oDlg
Local lSalgo := .f.

Define Dialog oDlg From 10, 10 To 50, 180 Pixel Style nOr( WS_POPUP, WS_THICKFRAME )

@ 06, 05 Say 'Ingrese Valor' Of oDlg Size 50, 10 Pixel
@ 05, 40 Get oGet Var nValor Size 35, 10 Pixel Of oDlg Picture '999999.99'
oGet : bKeyDown := { | nKey | If( nKey == VK_RETURN, ( If( nValor != 0, ( lSalgo := .t., oDlg : End() ), BorraRubroDeCarga( oDlg, oGet, @lSalgo, @nValor ) ) ), If( nKey == VK_ESCAPE, BorraRubroDeCarga( oDlg, oGet, @lSalgo, @nValor ), ) ) }

Activate Dialog oDlg Centered Valid lSalgo
Return nValor


Function BorraRubroDeCarga( oDlg, oGet, lSalgo )

If( !MsgNoYes( ' ¿ Desea cancelar la operación ? ', 'Atención' ) )
oGet : SetFocus()
Return 0
End
lSalgo := .t.
oDlg : End()
Return 0

Si ingreso un valor = 0, el sistema me dice si quiero cancelar la operación. Si le digo que no e ingreso un valor # 0, supuestamente el programa debería validarme el get y continuar. Pero me vuelve a preguntar si quiero cancelar la operación. Si le digo que no y vuelvo a pulsar enter ahí si me lo valida. Espero haber sido claro. Que estoy haciendo Mal ????
Muchas gracias a todos

Posted: Fri Oct 19, 2007 4:14 pm
by jacgsoft
asi deberia ser:

oGet : bKeyDown := { | nKey | If( nKey == VK_RETURN, ;
If( nValor != 0, (lSalgo:=.t., oDlg:End()), ;
BorraRubroDeCarga(oDlg, oGet,@lSalgo,@nValor)),nValor:=Val(Chr(nKey)) ) }


Jaime