2016-07-26 10 views
2

Im Grunde habe ich eine wirklich komplexe Matlab GUI, wo der Benutzer verschiedene Strings durch eine editextbox (die man eintippen kann) hinzufügen kann. Das Problem ist, dass ich verschiedene Tasten Pushdowns verschiedene Tastaturfunktionen zugewiesen, zum Beispiel "s" und "e" sind in Verwendung. Bei jeder Eingabe von "Schlange" werden die Funktionen "s" und "e" ausgeführt. Gibt es eine Möglichkeit zu bestimmen, ob ich in der Edittextbox geklickt habe, und es wird -> wie ein logischer Wert verwendet, so kann ich die Tastendruckfunktionen blockieren, indem ich es überprüfe.Ermitteln, ob eine MATLAB GUI edittextbox verwendet wird

Antwort

0

Innerhalb Ihrer Rückmeldung können Sie gco verwenden, um das aktuelle Objekt abzurufen. Sie können dann überprüfen, ob dies der Grafik-Handle zu Ihrem Bearbeitungsfeld ist.

fig = figure('WindowKeyPressFcn', @(s,e)keypress()); 

hedit = uicontrol('Style', 'edit'); 

function keypress() 
    if ~isequal(gco, hedit) 
     disp('Window Key Press') 
    end 
end 

Wenn auf der anderen Seite Sie keine globale Tastendruck Rückruf (mit WindowKeyPressFcn) festgelegt haben und Sie setzen stattdessen die KeyPressFcn jedes uicontrol einzeln, nur eine andere Angabe (oder keine) KeyPressFcn für das Bearbeitungsfeld würde funktionieren.

+0

Vielen Dank, es hat funktioniert! Meine Tastenrückrufe waren global. –

Verwandte Themen