Этот пример показывает, как создать программу, которая открывает модальное диалоговое окно, когда пользователь нажимает кнопку. Диалоговое окно содержит две кнопки, и пользователь должен выбрать одного из них. Программа отвечает согласно выбору пользователя в диалоговом окне.
На вкладке Home, в разделе Environment, нажимают Preferences> GUIDE> Show names in component palette.
В Командном окне введите guide
.
В диалоговом окне GUIDE Quick Start выберите Modal Question Dialog. Затем нажмите OK.
Щелкните правой кнопкой по тексту, “Вы хотите создать диалоговое окно вопроса?”
Затем выберите Property Inspector из контекстного меню.
В Property Inspector выберите свойство String
. Затем измените существующее значение на: Are you sure you want to close?
Затем нажмите Enter.
Выберите File> Save As.
В диалоговом окне Save As, в поле File name, modaldlg.fig
типа.
Создайте отдельный пользовательский интерфейс, содержащий кнопку Close:
В то время как все еще в GUIDE, выберите File> New.
В диалоговом окне GUIDE Quick Start выберите Blank GUI (Default). Затем нажмите OK.
От палитры элементов слева, перетащите кнопку в область размещения.
Щелкните правой кнопкой по кнопке и выберите Property Inspector.
В Property Inspector выберите свойство String
. Затем измените существующее значение на Close
. Затем нажмите Enter.
Из меню File выберите Save.
В диалоговом окне Save, в поле Имени файла, closedlg.fig
типа. Затем нажмите Save.
Файл кода, closedlg.m
, открывается в Редакторе.
На вкладке Editor, в разделе Navigate, нажимают Go To, и затем выбирают pushbutton1_Callback
.
Затем найдите следующий сгенерированный код в Редакторе:
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to close_pushbutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Добавьте следующий код сразу после комментария, который начинается с % handles...
.
% Get the current position from the handles structure % to pass to the modal dialog. pos_size = get(handles.figure1,'Position'); % Call modaldlg with the argument 'Position'. user_response = modaldlg('Title','Confirm Close'); switch user_response case 'No' % take no action case 'Yes' % Prepare to close application window delete(handles.figure1) end
Когда пользователь нажимает кнопку Close в closedlg окне, функция pushbutton1_Callback
выполняет эту команду:
user_response = modaldlg('Title','Confirm Close');
modaldlg
закодирована в другом программном файле, modaldlg.m
. Эта функция отображает второе окно: диалоговое окно Confirm Close. Возвращаемый аргумент, user_response
, является выбором пользователя от того диалогового окна.Команда switch
решает, закрыть ли первое окно (modaldlg) на основе выбора пользователя.
Сохраните свой код путем нажатия Save в редакторе Тулстрипе.
В Командном окне выполните команду, closedlg
.
MATLAB® отображает closedlg окно. Кликните по кнопке Close, чтобы выполнить pushbutton1_Callback
(в closedlg.m
). Эта функция вызывает modaldlg
, чтобы отобразить диалоговое окно Confirm Close.
Нажмите одну из кнопок в диалоговом окне Confirm Close. Когда вы нажимаете одну из кнопок, modaldlg.m
закрывает диалоговое окно Confirm Close и возвращает ваш выбор в функцию вызова (pushbutton1_Callback
). Затем команда switch
в этой функции решает, закрыть ли остающееся открытое окно.