How to enable and disable edit text box from a check box?

8 ビュー (過去 30 日間)
Fabio
Fabio 2014 年 4 月 17 日
コメント済み: Image Analyst 2016 年 7 月 4 日
I'm trying to enable and disable editable text box from a checkbox. The ideia is: when checkbox is checked the editable text box must be enable and when not checked it must be disable. My code works well when the editable text box is empty, however, if I type any value in the textbox, when I press the checkbox I get an error.
Error while evaluating uicontrol Callback
Error using handle.handle/set
Invalid or deleted object.
Error in OC_SST>check_min_val_cut_Callback (line 1625)
set(handles.min_val_cut,'enable','on');
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in OC_SST (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)OC_SST('check_min_val_cut_Callback',hObject,eventdata,guidata(hObject))
My code is:
%check box function
function check_min_val_cut_Callback(hObject, eventdata, handles)
tmp = get(hObject,'Value');
if tmp
handles.check_min_val_cut = tmp;
set(handles.min_val_cut,'enable','on'); %editable textbox turns on
else
handles.check_min_val_cut = 0;
set(handles.min_val_cut,'enable','off'); %editable textbox turns off
end
guidata(hObject,handles);
%edit text box function
function min_val_cut_Callback(hObject, eventdata, handles)
handles.min_val_cut = str2double(get(hObject,'String'));
guidata(hObject,handles);
Could anyone help me?
Thank you in advance.
Fabio

回答 (2 件)

Image Analyst
Image Analyst 2014 年 4 月 17 日
Why are you doing this:
handles.check_min_val_cut = 0;
???? You're blowing away the handle ID of your checkbox by setting the ID number equal to it's check value? Why would you do that? Let's say that handles.check_min_val_cut was 78.1435, and now you're going to set it to true or false, essentially breaking the connection between your handle structure and your checkbox. What was your intent with those lines? What did you want to do or think you were going to do when you put them in there?
  3 件のコメント
Image Analyst
Image Analyst 2014 年 4 月 17 日
"So, I define handles.check_min_val_cut = tmp" <- and that's your mistake. Don't do that.
Your simplified code looks like it should work, as long as the edit box's tag is "min_val_cut".
Fabio
Fabio 2014 年 4 月 17 日
No! There is no problem with the checkBOX! The checkbox works ok. The problem is when I try to enable a EDIT TEXT BOX from that checkBOX. Look at the above code. The function associated to the checkBOX is called check_min_val_cut_ Callback(hObject, eventdata, handles) and the function associated to the EDIT TEXT BOX is called min_val_cut_ Callback(hObject, eventdata, handles). So, again, if the checkbox is checked the EDIT TEXT BOX must become editable, otherwise the EDIT TEXT BOX must become not editable.

サインインしてコメントする。


houda
houda 2016 年 7 月 4 日
Hi, I am facing the same problem, did anyone find the solution ? Thanks !
  1 件のコメント
Image Analyst
Image Analyst 2016 年 7 月 4 日
He said he had a callback function for the edit field called min_val_cut_ Callback(). This means that the tag for the edit field was min_val_cut. He then had a line
handles.min_val_cut = str2double(get(hObject,'String'));
This blew away the handle for the edit field, making it no longer able to be accessed. To fix: Do not have a variable with the same name as the tag of a uicontrol, min_val_cut in his case.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeInteractive Control and Callbacks についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by