How to display an error message in GUI?

22 views (last 30 days)
I have a figure of table. The user will insert a data into the table. If the user suddenly inserts the wrong data, the table will be 'NaN'. My question is how I want to make the table does not display 'NaN' on the table but I want an error message appear. I have this coding:
function Mytable1_CreateFcn(hObject, eventdata, handles)
if isnan(Mytable1)
set(hObject, 'Data', 0);
errordlg('Input must be a number','Error');
end
handles.Mytable2 = hObject;
guidata(hObject,handles);
But there is an error with this code. Is this coding are correct to answer my question?

Accepted Answer

Walter Roberson
Walter Roberson on 17 Feb 2011
You wouldn't put the test in the create function, you would put the test in the edit function.
You may also want to uiwait() around the errordlg() so that you force the user to acknowledge the error. Your present code pops up the error but the user can hide it and continue on their way.
  3 Comments
Walter Roberson
Walter Roberson on 17 Feb 2011
ed = errordlg('Input must be a number','Error');
set(ed, 'WindowStyle', 'modal');
uiwait(ed);
It might be possible to make it impossible for the user to hide it, but it probably isn't worth the bother: with the above code, the user will not be able to proceed with anything else.
Paulo Silva
Paulo Silva on 17 Feb 2011
To show errors I often prefer to have them inside a text box, it's also good to show warnings and important info, also changing the text colors with the message type is great.

Sign in to comment.

More Answers (2)

slumberk
slumberk on 18 Feb 2011
@walter and paulo:
I did this coding on Mytable1_CellEditCallback. It still have error. Is this code true??
Mytable1=get(hObject,'Data')
if isnan(Mytable1)
set(hObject, 'Data', 0);
h=errordlg('Oh noes!','Error');
set(h, 'WindowStyle', 'modal');
uiwait(h);
return
end
handles.Mytable2 = hObject;
guidata(hObject,handles);
This is the error:
Mytable1 =
[1] [] []
[] [] []
[] [] []
[] [] []
??? Undefined function or method 'isnan' for input arguments of type 'cell'.
Error in ==> fyp_editor>Mytable1_CellEditCallback at 795 if ~isnan(Mytable1)
Error in ==> gui_mainfcn at 96 feval(varargin{:});
Error in ==> fyp_editor at 42 gui_mainfcn(gui_State, varargin{:});
Error in ==> @(hObject,eventdata)fyp_editor('Mytable1_CellEditCallback',hObject,eventdata,guidata(hObject))
??? Error while evaluating uitable CellEditCallback
  4 Comments
Matt Fig
Matt Fig on 18 Feb 2011
No, it is not a matrix. If it was a matrix, the error message wouldn't say,
"??? Undefined function or method 'isnan' for input arguments of type 'cell'."
Paulo Silva
Paulo Silva on 18 Feb 2011
all(cellfun(@isempty,Mytable1))

Sign in to comment.


slumberk
slumberk on 18 Feb 2011
@matt: i dont realy get what you are asking. So i just paste the code that from pushbuttons callback:
data1 = get(handles.Mytable1,'Data');
data2 = get(handles.Mytable2,'Data');
cost = cell2mat(get(handles.Mytable1,'Data'));
limit = cell2mat(get(handles.Mytable2,'Data'));
Is this answer you?
  2 Comments
Matt Fig
Matt Fig on 18 Feb 2011
Where is this code in relation to the code you posted previously? If you pay attention to the error messages, it clearly says you are trying to use ISNAN with a cell array.
slumberk
slumberk on 18 Feb 2011
@matt: Ok.. Let me tell you true process. I have a figure of table and a pushbuttons. The user will insert the data into the table but assume the user accidentally insert a wrong data. For example:
ALPHA BETA GAMMA
C1
C2
C3
If the user only want to use C1 and C2 but the user accidentally insert a data on C3 then he delete the data from C3 at column ALPHA and the column ALPHA at row C3 will become NAN. So how i want an error message says 'Please complete C3' and I dont want it become 'NAN' but i want to leave it blank. How can i make it?

Sign in to comment.

Categories

Find more on Migrate GUIDE Apps in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!