Page 1 of 1

Error con Gets

Posted: Mon Apr 10, 2006 9:18 am
by AngelSalom
A ver gente, una cosa que parece bastante simple, pero que no consigo hacer que funcione.

REDEFINE GET oGetFin1 VAR cTeclaFin1 ID 4004 OF oDlg
REDEFINE GET oGetFin2 VAR cTeclaFin2 ID 4005 OF oDlg
REDEFINE GET oGetFin3 VAR cTeclaFin3 ID 4006 OF oDlg

oGetFin2:bChange:={|nKey| Iif (nKey=13, oGetFin3:SetFocus(),oGetFin1:SetFocus())}

En teoria si se pulsa cualquier tecla que no sea el enter en oGetFin2, debe dar el foco a ogetfin1, no? Pues bueno, esto produce el siguiente error :

Application
===========
Path and name: C:\si\Trabajo\fwh\sifac2\fac.exe (32 bits)
Size: 6,020,096 bytes
Time from start: 0 hours 0 mins 28 secs
Error occurred at: 10/04/2006, 11:15:27
Error description: Error BASE/1075 Argument error: >
Args:
[ 1] = U
[ 2] = N 5

Stack Calls
===========
Called from: => GET:OVERSTRIKE(747)
Called from: => TWINDOW:KEYCHAR(853)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: => _FWH(0)
Called from: => DIALOGBOX(0)
Called from: => TDIALOG:ACTIVATE(0)
Called from: => TPVFINALIZAR(915)

Un cable, please!!!
Gracias.

Posted: Mon Apr 10, 2006 10:01 am
by Antonio Linares
Angel,

la primera parte no te hace falta, porque ENTER (13) saltará al siguiente control. Para que con otra letra salte al primero, lo suyo sería ponerle una validación tipo VALID ( oGet2:oJump := oGet1, .t. )

Posted: Mon Apr 10, 2006 10:15 am
by AngelSalom
Puedes ser un poco más concreto?
No consigo hacer que funcione. Poniendo ese valid, igual salta al tercer get.

Gracias.

Posted: Mon Apr 10, 2006 11:05 am
by Antonio Linares
Angel,

En este ejemplo verás como al pulsar enter en el segundo GET se salta al primero. Yo he usado un If( .t., ... Tu deberás poner ahi la condición que quieras para que salte al primero ó no:

Code: Select all

#include "Fivewin.ch" 

FUNCTION MAIN() 

   local oDlg, oGet1, oGet2, oGet3
   local cVar1 := Space( 10 ), cVar2 := Space( 10 ), cVar3 := Space( 10 ) 

   DEFINE DIALOG oDlg 

   @ 1, 1 GET oGet1 VAR cVar1 
   @ 2, 1 GET oGet2 VAR cVar2 VALID( If( .t., oGet2:oJump := oGet1,), .t. )
   @ 3, 1 GET oGet3 VAR cVar3 

   ACTIVATE DIALOG oDlg; 
             CENTER 

RETURN NIL