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
Ultima tecla en un oGet
- Antonio Linares
- Site Admin
- Posts: 42450
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 20 times
- Been thanked: 58 times
- Contact:
Para que un GET reconozca la pulsación de enter y haga algo específico:
Si quieres que todos los GETs reaccionen igual, puedes hacer:
Code: Select all | Expand
oGet:bKeyDown:= {|nKey| if( nKey==VK_RETURN, <acción>, nil ) }
Si quieres que todos los GETs reaccionen igual, puedes hacer:
Code: Select all | Expand
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
-
- Posts: 192
- Joined: Fri Nov 18, 2005 7:34 pm
-
- Posts: 192
- Joined: Fri Nov 18, 2005 7:34 pm
-
- Posts: 192
- Joined: Fri Nov 18, 2005 7:34 pm
- Antonio Linares
- Site Admin
- Posts: 42450
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 20 times
- Been thanked: 58 times
- Contact:
Prueba este ejemplo:
Code: Select all | Expand
#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