Matlab - keyPressFcn

 
Vista:

keyPressFcn

Publicado por Maesla (15 intervenciones) el 25/10/2007 21:05:34
Hola, queria saber porque esto no funciona

function edit1_KeyPressFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

name = get(handles.edit1, 'String');

if strcmp(name,'clave')
set(handles.edit1,'ForegroundColor',[0.5 0.3 0.4]);
end

Lo que intento es que cuando se escriba en edit 1 lo que yo le diga (aqui,clave, por ejemplo) haga algo, (aqui cambiar el color, por ejemplo)

He probado a hacer un boton con este codigo y cuando lo pulso con edit1 siendo 'clave', lo cambia de color, asi que la sentencia esta bien, y tambien he probado a que se desencadenen eventos cuando escriba en el edit, asi que tambien he comprobado que el evento salta, asi que realmente no se xq no funciona.
Yo creo que puede ser porque comprueba el evento antes de que realmente el edit1 valga clave, y por eso no lo llega a cambiar de color, o no se...
Si a alguien se le ocurre algo.

Y tengo otras preguntillas.
¿Hay algun objeto en matlab parecido al timer de visualbasic? Un objeto que cada n segundos haga algo.

¿Se puede cambiar la orientacion del texto en la interfaz grafica de matlab?
Para que esté daleado el texto, o para que mire hacia arriba (no se si esto queda claro)

GRACIAS!
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:keyPressFcn

Publicado por Kike (304 intervenciones) el 25/10/2007 22:44:31
Probé tu programa y no funcionó. Pero este sí funciona:

function edit1_KeyPressFcn(hObject, eventdata, handles)

letra=get(gcf,'CurrentCharacter'); % detecta la letra digitada
letra=double(letra);
palabra=get(handles.edit1,'UserData'); % vector de datos de usuario
palabra=[palabra,letra] % agrego la letra a la palabra
set(handles.edit1,'UserData',palabra);
palabra=char(palabra); % los datos numéricos son convertidos en letras

if strcmp(palabra,'clave')
set(handles.edit1,'ForegroundColor',[1 0 0]);
end
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

RE:keyPressFcn

Publicado por Maesla (15 intervenciones) el 26/10/2007 13:36:09
Gracias, auque no entiendo porque funciona tu codigo y el mio no,
De todas maneras he modificado lo que has mandado porque tu codigo solo funciona si escribes toda la palabra de una vez.
Es decir, si escribes por ejemplo, clavo, borras.> clav, y escibes clave a mi ya no me funciona, porque almacena cuando pulsas la tecla de borrado. Con esto ya no pasa


function edit1_KeyPressFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
letra=get(gcf,'CurrentCharacter'); % detecta la letra digitada
letra=double(letra);
palabra=get(handles.edit1,'UserData'); % vector de datos de usuario

----------------------------------------------------------------------------------
if letra ~= 8
palabra=[palabra,letra] % agrego la letra a la palabra
elseif length(palabra)~= 0
palabra(end) = [];
end
--------------------------------------------------------------------------------------------
set(handles.edit1,'UserData',palabra);

%Esto hace mas o menos lo que hace el if de arriba, pero lo otro da menos
%problemas
% buscarBorrados = find(palabra == 8);
% palabra(buscarBorrados) = [];

palabra=char(palabra) % los datos numéricos son convertidos en letras

if strcmp(palabra,'clave')
set(handles.edit1,'ForegroundColor',[1 0 0]);
end
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