Модальное диалоговое окно в GUIDE

Этот пример показывает, как создать программу, которая открывает модальное диалоговое окно, когда пользователь нажимает кнопку. Диалоговое окно содержит две кнопки, и пользователь должен выбрать одного из них. Программа отвечает согласно выбору пользователя в диалоговом окне.

Создание диалогового окна

  1. На вкладке Home, в разделе Environment, нажимают Preferences> GUIDE> Show names in component palette.

  2. В Командном окне введите guide.

  3. В диалоговом окне GUIDE Quick Start выберите Modal Question Dialog. Затем нажмите OK.

  4. Щелкните правой кнопкой по тексту, “Вы хотите создать диалоговое окно вопроса?”

    Затем выберите Property Inspector из контекстного меню.

  5. В Property Inspector выберите свойство String. Затем измените существующее значение на: Are you sure you want to close?

    Затем нажмите Enter.

  6. Выберите File> Save As.

  7. В диалоговом окне Save As, в поле File name, modaldlg.fig типа.

Создайте программу, которая открывает диалоговое окно

Создайте отдельный пользовательский интерфейс, содержащий кнопку Close:

  1. В то время как все еще в GUIDE, выберите File> New.

  2. В диалоговом окне GUIDE Quick Start выберите Blank GUI (Default). Затем нажмите OK.

  3. От палитры элементов слева, перетащите кнопку в область размещения.

  4. Щелкните правой кнопкой по кнопке и выберите Property Inspector.

  5. В Property Inspector выберите свойство String. Затем измените существующее значение на Close. Затем нажмите Enter.

  6. Из меню File выберите Save.

  7. В диалоговом окне 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)
  8. Добавьте следующий код сразу после комментария, который начинается с % 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) на основе выбора пользователя.

  9. Сохраните свой код путем нажатия Save в редакторе Тулстрипе.

Выполнение программы

  1. В Командном окне выполните команду, closedlg.

  2. MATLAB® отображает closedlg окно. Кликните по кнопке Close, чтобы выполнить pushbutton1_Callbackclosedlg.m). Эта функция вызывает modaldlg, чтобы отобразить диалоговое окно Confirm Close.

  3. Нажмите одну из кнопок в диалоговом окне Confirm Close. Когда вы нажимаете одну из кнопок, modaldlg.m закрывает диалоговое окно Confirm Close и возвращает ваш выбор в функцию вызова (pushbutton1_Callback). Затем команда switch в этой функции решает, закрыть ли остающееся открытое окно.

Похожие темы