GUI issue edit text boxes not empty when blank

2 Ansichten (letzte 30 Tage)
Joakino
Joakino am 6 Jan. 2016
Kommentiert: Walter Roberson am 6 Jan. 2016
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 Kommentar
Joakino
Joakino am 6 Jan. 2016
Bearbeitet: Joakino am 6 Jan. 2016
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

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Ingrid
Ingrid am 6 Jan. 2016
Bearbeitet: Ingrid am 6 Jan. 2016
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 Kommentare
Joakino
Joakino am 6 Jan. 2016
Bearbeitet: Joakino am 6 Jan. 2016
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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Migrate GUIDE Apps finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by