Error con Gets

Post Reply
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Error con Gets

Post 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.
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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. )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Post by AngelSalom »

Puedes ser un poco más concreto?
No consigo hacer que funcione. Poniendo ese valid, igual salta al tercer get.

Gracias.
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

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

Antonio Linares
www.fivetechsoft.com
Post Reply