Page 1 of 1

on change en un get

Posted: Sat Feb 18, 2006 7:56 pm
by chocochester
Hola. Estoy usando un get con un on change, para que se actualice un say según lo que vaya escribiendo, pero se me borra el contenido del get cada vez que escribo algo. Digamos que solo me sale el ultimo caracter escrito.

@ 40, 55 GET OBJ[1] VAR ARTI[1] PIXEL SIZE 58,10 COLOR CLR_AMARILLO, CLR_AZULETE;
UPDATE VALID TRATAR_A(1) font ofontdlg OF EDICION; // ON CHANGE ACTUA_FAM();
PICTURE "@! XXXXXXXXXXXXX"
OBJ[1]:BKEYDOWN:={|nkey,nflags|ACTUA_FAM(NKEY)}

como veis he probado varias cosas ya

y esta es la función
FUNCTION ACTUA_FAM(NKEY)
//ARTI[1]+=CHR(NKEY) //ARTI[1]
MSGALERT(CHR(NKEY))
//ARTI[1]+=ALLTRIM(STR(LASTKEY()))
//MSGALERT(ARTI[1])
//MSGALERT(LASTKEY())
IF (LEN(ALLTRIM(ARTI[1])) >= 2)
SELECT 4
SEEK LEFT(ARTI[1],2)
MFAMILIA=CODIGO+" "+NOMBRE
ENDIF
IF (LEN(ALLTRIM(ARTI[1])) >= 4)
SELECT 41
SEEK RIGHT(LEFT(ARTI[1],4),2)
MSUBFAM=CODIGO+" "+NOMBRE
ENDIF
SELECT 1
OBJ[1]:REFRESH()
EDICION:UPDATE()
EDICION:REFRESH()
RETURN NIL

si descomento el msgalert, a veces va. Es como si quedara algo en algún buffer o algo así.
Gracias de antemano. Un saludo.

Posted: Sun Feb 19, 2006 3:22 am
by James Bott

Code: Select all

oGet:bChange:={| nKey, nFlag, self| msgInfo( getLastKey( nKey, nFlag, oGet) ) }

function getLastKey( nKey, nFlag, oGet)
  local nLastKey := if( getKeyState(VK_SHIFT) .or. ;
  GetKeyToggle( VK_CAPITAL), chr(oGet:nLastKey),;
   lower(chr(oGet:nLastKey))  )
return nLastkey