GUI issue edit text boxes not empty when blank

조회 수: 10 (최근 30일)
Joakino
Joakino 2016년 1월 6일
댓글: Walter Roberson 2016년 1월 6일
I want to check if my edit-text fields in my GUI are blank, before checking if these values are valid for a given piece of equipment.
My code is:
function CheckValuesButton_Callback(hObject, eventdata, handles)
if handles.NominalWeightRadio == 1
NW = (handles.NominalWeightEdit);
if isempty(NW)
errordlg('Add Nominal Weight.','Error')
return
end
end
BOPType = char(handles.BOPTypeBox);
RamDesign = char(handles.RamDesignBox);
ID = (handles.InsideDiameterEdit);
if isempty(ID)
errordlg('Add Inside Diameter.','Error')
return
end
OD = (handles.OutsideDiameterEdit);
if isempty(OD)
errordlg('Add Outside Diameter.','Error')
return
end
[MaxWall, MaxDiam] = getMaxDims(BOPType,RamDesign);
handles.errorDims = checkDims(MaxWall, MaxDiam, ID, OD);
guidata(hObject,handles)
The problem is that even though I have not touched the edit-text boxes, they are not empty, i.e., my code continues to run, and crashes in checkDims when there are no numerical values for ID and OD. When I print the handles i get:
handles =
OutsideDiameterEdit: [1x1 UIControl]
InsideDiameterEdit: [1x1 UIControl]
PipeDescriptionEdit: [1x1 UIControl]
NominalWeightEdit: 15
Where I have inserted info for the NominalWeightEdit text box.
How can I get these to be empty, instead of [1x1 UIControl].
Thanks
Joakim
  댓글 수: 1
Joakino
Joakino 2016년 1월 6일
편집: Joakino 2016년 1월 6일
Here is for example the code for my InsideDiameterEdit:
function InsideDiameterEdit_Callback(hObject, eventdata, handles)
% hObject handle to InsideDiameterEdit (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
handles.InsideDiameterEdit = str2double(get(hObject,'String'));
guidata(hObject, handles)
% Hints: get(hObject,'String') returns contents of InsideDiameterEdit as text
% str2double(get(hObject,'String')) returns contents of InsideDiameterEdit as a double

댓글을 달려면 로그인하십시오.

답변 (1개)

Ingrid
Ingrid 2016년 1월 6일
편집: Ingrid 2016년 1월 6일
you should use
ID = get(handles.InsideDiameterEdit,'String')
to check what the value is in the edit-field. It will be empty if you have not typed in anything. If you have typed in a value, you should use str2double() to convert it and also perform an errorcheck there (because the user might have typed in something else than a number by mistake)
  댓글 수: 2
Joakino
Joakino 2016년 1월 6일
편집: Joakino 2016년 1월 6일
This works perfectly when I dont enter anything. However, if i try to enter a value in e.g. NominalWeight, with this code:
NW = get(handles.NominalWeightEdit,'String'); %THIS IS LINE 162
if isempty(NW)
errordlg('Add Nominal Weight.','Error')
return
end
I get the following error:
Error using handle.handle/get
Invalid or deleted object.
Error in Version4>CheckValuesButton_Callback (line 162)
NW = get(handles.NominalWeightEdit,'String');
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in Version4 (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)Version4('CheckValuesButton_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by