Ultima tecla en un oGet

Ultima tecla en un oGet

Postby servicomver » Wed Jun 14, 2006 10:26 pm

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

Postby Antonio Linares » Thu Jun 15, 2006 11:06 am

Para que un GET reconozca la pulsación de enter y haga algo específico:
Code: Select all  Expand view  RUN
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  RUN
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
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby servicomver » Thu Jun 15, 2006 7:28 pm

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: 190
Joined: Fri Nov 18, 2005 7:34 pm

Postby servicomver » Thu Jun 15, 2006 7:37 pm

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

Postby manuramos » Thu Jun 15, 2006 8:53 pm

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

Postby servicomver » Tue Jun 20, 2006 7:14 pm

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

Postby Antonio Linares » Wed Jun 21, 2006 6:48 am

Prueba este ejemplo:
Code: Select all  Expand view  RUN
#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
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 20 guests

cron