Pregunta: | 45400 - COMO HACER PARA MOSTRAR ASTERISCOS EN UN CAMPO GET (PASSWORD |
Autor: | Yangnhay Gutierrez |
Como hacer para que en Foxpro 2.6 para dos al introducir datos en un campor GET aparezcan asteriscos, ejemplo, un campo de contraseña.
Le agradeceré cualquier sugerencia. |
Respuesta: | Juan Fuentes |
En Foxpro 2.6 para DOS lo mejor que he podido hacer es incluir esta linea:
@ 10,40 GET VJPASS FUNC 'K' COLOR ,W+/W*, ,,,N+/N* SIZE 1,25 PICTURE '@!' DEFAULT SPACE(20) READ No muestra asteriscos, pero no muestra lo tecleado, solo se ve que el cursor avanza. Por otra parte, creé una función que usa Inkey() para capturar lo tecleado y mostrar asteriscos: V_CLAVE = "" V_PASS = "" CONTEO = 0 DO WHILE V_PASS # V_CLAVE AND CONTEO < 3 CONTEO = CONTEO + 1 V_PASS = PASSWRD(8) IF V_CLAVE # V_PASS WAIT WIND "Esa no es la llave de acceso..." ENDIF ENDDO Las lineas anteriores permiten 3 oportunidades de teclear un password correcto. Esta funcion muestra asteriscos y devuelve los datos tecleados. FUNC PASSWRD PARA PW_LEN PRIV PW_LEN, PASS_STR, KEY, CUR_CURS PUSH KEY CLEAR IF PARA() = 0 && Si no hay parametros, se asume PW_LEN = 8 && una longitud de 8 caracteres. ENDIF PASS_STR = '' KEY = 0 CUR_CURS = SET('CURSOR') = 'ON' && Estado actual del cursor SET CURSOR ON CUR_WIN = WOUTPUT() DEFI WIND PASS_WIN FROM 08,20 TO 15,60 ACTI WIND PASS_WIN @ 02,08 SAY 'Ingrese llave de Acceso' @ 03,12 SAY '(' + ltrim(str(pw_len)) + ' caracteres)' @ 05,15 SAY '' DO WHILE KEY # 13 && Ingresar hasta que presione Enter M.KEY = INKEY(0) DO CASE CASE ISALPHA(CHR(M.KEY)) OR (M.KEY >= 32 AND M.KEY <= 64) PASS_STR = PASS_STR + CHR(M.KEY) CASE M.KEY = 19 OR M.KEY = 127 OR M.KEY = 7 @ ROW(),COL()-1 SAY ' ' @ ROW(),COL()-1 SAY '' PASS_STR = SUBS(PASS_STR,1,LEN(PASS_STR)-1) ENDCASE IF LEN(PASS_STR) >= PW_LEN M.KEY = 13 ENDIF @ 05,15 SAY SPAC(PW_LEN) @ 05,15 SAY REPL('*',LEN(PASS_STR)) ENDDO RELE WIND PASS_WIN IF EMPTY(CUR_WIN) ACTIVATE SCREEN ENDIF IF NOT CUR_CURS SET CURSOR OFF ENDIF POP KEY IF LEN(PASS_STR) < PW_LEN FOR J_K = LEN(PASS_STR) TO PW_LEN-1 PASS_STR = PASS_STR + " " NEXT ENDIF PASS_STR = UPPER(PASS_STR) RETURN(PASS_STR) Espero te sirva. |
Respuesta: | Jose Luis Henriquez |
Gutierrez
En la propiedad del Text Box llamada: PasswordChar ponle un (*) |