How to fix error done by pressing "Cancel" button

26 次查看(过去 30 天)
Hi everybody!
I wrote a simple function to save my axes using saveas funct. but if I click on "Cancel" in the opened window, I have an error in my Matlab... There's a way to interrupt the operation of saving if users press "Cancel" without an error??

采纳的回答

Titus Edelhofer
Titus Edelhofer 2012-1-18
Hi,
the uiputfile dialog returns 0 for the filename if the user presses cancel:
filename = uiputfile;
if filename==0
% user pressed cancel
return
end
% go on with saving your data ...
Titus
  4 个评论
Ivan Demec
Ivan Demec 2023-11-28
Your answer breaks the code if you use the multiselect option of the UIgetFile i.e.,
Undefined function 'eq' for input arguments of type 'cell'.
@Walter Roberson your solution works with multiselect. Thank you
Titus Edelhofer
Titus Edelhofer 2023-11-28
Interesting coincidence: I wrote the answer a decade ago, and most often still use the filename==0 test. Believe it or not, just about 2 weeks ago I stumbled across my own solution not working (anymore) in case of multiselect :)

请先登录,再进行评论。

更多回答(2 个)

Walter Roberson
Walter Roberson 2012-1-18
Sorry, Cancel in which window exactly? And do you mean Cancel or do you mean the window close button? saveas() itself does not have a Cancel. If you are referring to something like a callback initiated from a window, have you considered setting the Cancel button to 'enable', 'off' during the time the saveas operation is going on?

Jethro
Jethro 2012-1-18
I write you my code, maybe it can help you to understand my situation...
function PB_S_G_Callback(hObject, eventdata, handles)
F=getframe(handles.G1_Grafico); %select axes in GUI
global fout
[fout path]=uiputfile({'*.png'; '.bmp'; '.jpg'; '.gif'; '.tiff'})
global fpath
fpath = strcat(path, fout);
a=saveas(gcf, fpath);
I want to use this code to save my plots (the callback name means Pushbutton to Save Plots): When opening my "save window", I can press OK (to save) or CANCEL (to cancel operation)... If I press CANCEL, Matlab shows me an error...
EDIT: I solved with Titus code, now it works correctly!!
function PB_S_G_Callback(hObject, eventdata, handles)
F=getframe(handles.G1_Grafico); %select axes in GUI
global fout
[fout path]=uiputfile({'*.png'; '.bmp'; '.jpg'; '.gif'; '.tiff'})
if fout==0
return
end
global fpath
fpath = strcat(path, fout);
a=saveas(gcf, fpath);
THANKS A LOT!

类别

Help CenterFile Exchange 中查找有关 Interactive Control and Callbacks 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by