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.
on change en un get
- James Bott
- Posts: 4654
- Joined: Fri Nov 18, 2005 4:52 pm
- Location: San Diego, California, USA
- Contact:
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