La validación para lo que indicas, debería hacerse en el evento valid del campo y no en el keypress, porque al entrar el primer caracter, siempre va a ser o numérico o alfabético y te daría error.
Lo que no entiendo bien es que los 6 dígitos sean sobre letras (si son dígitos no son letras)
lo que haría, aproximadamente:
FUNCTION ValidaPatente(tcPatente)
IF LEN(tcPatente) != 6
WAIT WINDOW "Patente incompleta, faltan/sobran caracteres" NOWAIT
RETURN 0
ENDIF
LOCAL lbHayLetras, lbHayNumeros AS BOOLEAN, lc AS STRING
STORE .F. TO lbHayLetras, lbHayNumeros && = toman valor .F. en LOCAL
FOR I = 1 TO 6
lc = SUBSTR(tcPatente, I, 1)
DO CASE
CASE ISALPHA(lc)
lbHayLetras = .T.
CASE ISDIGIT(lc)
lbHayNumeros = .T.
OTHERWISE
WAIT WINDOW "Patente incorrecta, hay caracteres extraños" NOWAIT
RETURN 0
ENDCASE
ENDFOR
IF lbHayLetras AND lbHayNumeros
RETURN 1 && hay letras y números
ENDIF
WAIT WINDOW "Patente incorrecta, son todos " + IIF(lbHayLetras, "letras", "números") NOWAIT
RETURN 0
ENDFUNC
La solución de Fidel es más elegante pero "máscara". Feliz Viernes
Saludos: Miguel, La Pampa (RA)
Larga Vida y Prosperidad
Que la Fuerza los acompañe,