Page 1 of 1

Ultima tecla en un oGet

PostPosted: Wed Jun 14, 2006 10:26 pm
by servicomver
Hola:
Dentro de una pantalla tengo varios oGet, el caso es que necesito que cuando el usuario este sobre el ultimo oGet, si pulsa enter preguntar si Grabo los datos, si es flecha arriba o cualquier otra q no pase nada, espero haberme explicado correctamente es algo parecido al lastkey() de clipper (no importa q tenga o no datos el ultimo oGet)
salu2
veracruz, mexico

PostPosted: Thu Jun 15, 2006 11:06 am
by Antonio Linares
Para que un GET reconozca la pulsación de enter y haga algo específico:
Code: Select all  Expand view
oGet:bKeyDown:= {|nKey| if( nKey==VK_RETURN, <acción>, nil ) }

Si quieres que todos los GETs reaccionen igual, puedes hacer:
Code: Select all  Expand view
for n := 1 to Len( oDlg:aControls )
   if Upper( oDlg:aControls[ n ]:ClassName() ) == "TGET"
      oDlg:aControls[ n ]:bKeyDown:= {|nKey| if( nKey==VK_RETURN, <acción>, nil ) }
   endif
next

PostPosted: Thu Jun 15, 2006 7:28 pm
by servicomver
HOLA ANTONIO:
use el metodo que me sugieres para conocer la pulsacion del oget, pero no hace nada, es decir no ejecuta ninguna accion

PostPosted: Thu Jun 15, 2006 7:37 pm
by servicomver
Hola Antonio

efectue el ejemplo que pusiste:
oGet5:bKeyDown:= {|nKey| if(nKey==VK_RETURN, MsgInfo("Accion"), Nil )}

obviamente en lugar del msginfo va un llamado de otra accion pero estoy probando..
el caso es que no ejecuta nada, que estare haciendo mal ?

gracias por tu ayuda
salu2

PostPosted: Thu Jun 15, 2006 8:53 pm
by manuramos
En teoría, oGet:nLastKey tiene el valor de la última tecla pulsada. Puedes intentar leerla llamando a una funcciion desde el VALID del oGet, pues, en teoría también, esas teclas hacen que salgas del GET. (la funcion tiene que devolver .T.)

PostPosted: Tue Jun 20, 2006 7:14 pm
by servicomver
Hola antonio:
probe con la primera opcion pero no hace nada

oGet:bKeyDown:= {|nKey| if( nKey==VK_RETURN, Prueba(), nil ) }

probe la opcion de manuramos y asi funciona correctamente, usando la opcion VALID del oGet y validando posteriormente Lastkey gracias por su ayuda

PostPosted: Wed Jun 21, 2006 6:48 am
by Antonio Linares
Prueba este ejemplo:
Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oDlg, oGet, oBtn
   local lTest := .t.
   local nTest := 123, oTEST1
   local cTest := "ABC", oTEST2

   SET _3DLOOK ON

   DEFINE DIALOG oDlg TITLE "A simple GET" ;
      FROM 2, 2 TO 13, 40

   @ 10, 10 GET oTEST1 VAR nTest SIZE 120, 13 pixel OF oDlg RIGHT PICTURE "999.99";
      valid (oTEST1:Refresh(), .T.)

   @ 30, 10 GET oTEST2 VAR cTest SIZE 120, 13 pixel OF oDlg PICTURE "@! XXXXXXXXXX" color "N*/W";
      valid (oTEST2:Refresh(), .T.)

   oTEST2:bKeyDown = { | nKey | MsgInfo( nKey ) }

   @ 3, 4 BUTTON oBtn PROMPT "&Ok" SIZE 45, 12 OF oDlg ;
      ACTION ( oDlg:End(), MsgInfo( cTest ) ) DEFAULT

   @ 3, 14 BUTTON "&Cancel" SIZE 45, 12 OF oDlg ;
      ACTION ( oDlg:End(), MsgInfo( cTest ) )

   ACTIVATE DIALOG oDlg CENTERED

return nil