Matlab - Contraseña

   
Vista:

Contraseña

Publicado por Kike (304 intervenciones) el 12/10/2007 22:20:16
Saludos. Deseo que al introducir una contraseña en un texto editable de una GUI se cambie cada letra que digite el usuario por un asterisco. Ya lo he logrado, pero tengo problemas cuando presiono Shift o BloquearMayúsculas.

Aquí pongo el programa. Para que funcione, en el Inspector de Propiedades del texto editable la propiedad KeyPressFcn debe tener el siguiente valor:
nombre_programa('edit1_KeyPressFcn',gcbo,[],guidata(gcbo))
Y la propiedad UserData tiene el siguiente valor: [42;0]

La lógica es esta: el programa detecta qué letra digita el usuario, y la sustituye en el texto editable por un asterisco. Las letras son detectadas como valores double (ASCII), por ello inicializo UserData con 42 (que corresponde al asterisco) y dejo la segunda fila de la matriz UserData para almacenar los doubles de las letras que digita el usuario.

Y esta es la función:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function edit1_KeyPressFcn(hObject, eventdata, handles)
set(gcf,'Color',[rand,rand,rand]); % cambia el color de la ventana cada vez que se presiona
% una tecla

matriz=get(handles.edit1,'UserData'); % obtengo el contenido de UserData

as=matriz(1,:); % Asteriscos. Están en la primera fila de UserData

palabraas=get(gcf,'CurrentCharacter'); % palabra que se muestra en el texto editable, que
% contiene sólo asteriscos

palabra=palabraas(end); % palabra que va digitando el usuario. Tomo el último caracter
% porque los demás son asteriscos

matriz(2,end+1)=palabra; % almaceno el double de la letra

as=[as,42]; % agrego otro asterisco por cada letra digitada

set(handles.edit1,'String',char(as)); % el usuario sólo ve asteriscos cuando escribe

matriz(1,:)=as;
set(handles.edit1,'UserData',matriz); % actualizo UserData

% Muestro el vector de doubles y las letras que ha digitado el usuario. Elimino el primer
% elemento porque fue con el que inicialicé a UserData antes que el usuario
% comenzara a escribir
matriz(2,2:end)
char(matriz(2,2:end))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

El problema es que no reconoce las teclasShift ni a BloquearMayúsculas. Parece que estas teclas no tienen un valor ASCII asignado, sin embargo las letras aparecen mayúsculas. ¿Sabe alguien cómo hacer para reconocer estas teclas?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Contraseña

Publicado por Raidel (11 intervenciones) el 04/03/2010 05:40:53
Pudieras especificarme mejor porque probe tu ejemplo pero no me sirve
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar