Uso funzione KeyPressFcn

di il
2 risposte

Uso funzione KeyPressFcn

Buongiorno.
sto tentando di usare un controllo tipo edit per lanciare un processo.
Il processo deve partire dopo aver cambiato (editato) il contenuto del controllo stesso.

Ho pensato di dare 'return' come ultimo evento di tastiera.
Ho utilizzato la funzione KeyPressFcn per riconoscere la pressione del tasto 'return' costruendo questo esempio:
function myEdit_KeyPressFcn(hObject, eventdata, handles)
%
if strcmp(eventdata.Key,'return')
	msgbox('Fatto !')
	T=get(handles.myEdit,'String');
	myProcess(T);
end
questo funziona.

A questo punto ho tolto msgbox. Risultato: Non funziona più.
ho provato a sostituire msgbox con altri comandi. Niente da fare: funziona solo con msgbox

Qualcuno sa spiegarmi perché?

Grazie

2 Risposte

  • Re: Uso funzione KeyPressFcn

    La stringa che inserisci nell'editbox viene effettivamente acquisita e memorizzata nel campo "String" dello stesso, solo nel momento in cui il focus passa ad un altro oggetto come nel caso della creazione del msgbox.

    Puoi sostituire la chiamata a msgbox con
    pause(.1)
    questo interrompe l'esecuzione della GUI per 0.1 secondi (l'effetto del ritardo non si dovrebbe notare) ma consente l'effettiva memorizzazione della stringa.

    In alternativa, sempre eliminando la chiamata a msgbox puoi premere due volte il tasto return o, prima di premere return, cliccare con il mouse in un punto qualunque della GUI oppure.
  • Re: Uso funzione KeyPressFcn

    Grazie.
    In effetti dando 2 volte enter il processo parte.
    Ho preferito la soluzione di chiamare la funzione myEdit_Callback e da lì far partire il processo che mi interessa.

    Grazie ancora
Devi accedere o registrarti per scrivere nel forum
2 risposte