Вызов обратного вызова кнопки в другом обратном вызове кнопки - PullRequest
1 голос
/ 14 февраля 2012

Я пытаюсь нажать кнопку обратного вызова в другой кнопке обратного вызова, но у меня возникли проблемы:

Вот что я пытаюсь сделать:

C_N_Callback(hObject,eventdata, handles)

   RN_Callback(handles, [], []);

Я пробовал это, но выдал эту ошибку:

Попытка ссылки на поле неструктурного массива.

Внутри RN_Callback на первом шаге, где он делает getappdata.

Я тоже пробовал это:

C_N_Callback(hObject,eventdata, handles)

   RN_Callback(hObject,eventdata, handles);

Это не выдало ошибку, но когда я запускаю графический интерфейс, он продолжает выполнять процедуру в RN_Callback (думаю, при обновлении).

1 Ответ

1 голос
/ 14 февраля 2012

Возможно, RN_Callback использует ссылку на hObject.Напоминаю, что hObject - это объект, для которого вызывается обратный вызов.Таким образом, в вашем случае это будет C_N, который будет передан в RN_Callback вместо RN.

В этом случае код будет неправильным, потому что он ожидает объект GUI одноготипа, но получает другой.Например:

function RN_Callback(hObject,eventdata, handles)
     set(hObject,'String','This is me!');
end    

function C_N_Callback(hObject,eventdata, handles)
     RN_Callback(hObject,eventdata, handles);
end

Нажатие на RN изменит его строку.Но нажатие на C_N изменит C_N вместо RN, как вы могли ожидать.

...