Ultima tecla en un oGet

Post Reply
servicomver
Posts: 158
Joined: Fri Nov 18, 2005 7:34 pm

Ultima tecla en un oGet

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Para que un GET reconozca la pulsación de enter y haga algo específico:

Code: Select all

oGet:bKeyDown:= {|nKey| if( nKey==VK_RETURN, <acción>, nil ) }
Si quieres que todos los GETs reaccionen igual, puedes hacer:

Code: Select all

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
servicomver
Posts: 158
Joined: Fri Nov 18, 2005 7:34 pm

Post 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
servicomver
Posts: 158
Joined: Fri Nov 18, 2005 7:34 pm

Post 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
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post 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.)
Nos Gusta Programar
servicomver
Posts: 158
Joined: Fri Nov 18, 2005 7:34 pm

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Prueba este ejemplo:

Code: Select all

#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
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply