Создание многооконных приложений в App Designer

Приложение мультиокна состоит из двух или больше приложений, которые осуществляют обмен данными. Способ, которым вы осуществляете обмен данными между приложениями, зависит от дизайна. Один общий дизайн включает два приложения: главное приложение и диалоговое окно. Как правило, главное приложение имеет кнопку, которая открывает диалоговое окно. Когда пользователь закрывает диалоговое окно, диалоговое окно отправляет выборы пользователя в главное окно, которое выполняет вычисления и обновляет пользовательский интерфейс.

Эти приложения делятся информацией по-разному в разное время:

  • Когда диалоговое окно открывается, главное приложение передает информацию диалоговому окну путем вызова приложения диалогового окна с входными параметрами.

  • Когда пользователь кликает по кнопке OK в диалоговом окне, диалоговое окно возвращает информацию в главное приложение путем вызывания государственной функции в главном приложении с входными параметрами.

Обзор процесса

Создавать приложение описало в предыдущем разделе, необходимо создать два отдельных приложения (главное приложение и приложение диалогового окна). Затем выполните эти высокоуровневые задачи. Каждая задача включает несколько шагов.

  • Отправьте информацию в Диалоговое окно — Запись обратный вызов StartupFcn в приложении диалогового окна, которое принимает входные параметры. Один из входных параметров должен быть объектом главного приложения. Затем в главном приложении вызовите приложение диалогового окна с входными параметрами.

  • Возвратите информацию в Главное приложение — Запись государственная функция в главном приложении, которое обновляет пользовательский интерфейс на основе выборов пользователя в диалоговом окне. Поскольку это - государственная функция, диалоговое окно может вызвать его и передать значения ему.

  • Управляйте Windows When They Close — Запись обратные вызовы CloseRequest в обоих приложениях, которые выполняют задачи обслуживания, когда окна закрываются.

Чтобы видеть реализацию всех шагов в этом процессе, см. Приложение Графического изображения, Которое Открывает Диалоговое окно.

Отправьте информацию в диалоговое окно

Выполните эти шаги, чтобы передать значения от главного приложения до приложения диалогового окна.

  1. В приложении диалогового окна задайте входные параметры для обратного вызова StartupFcn, и затем добавьте код к обратному вызову. Откройте приложение диалогового окна в Представление кода. Во вкладке Editor нажмите App Input Arguments . В диалоговом окне App Input Arguments введите список, разделенный запятыми имен переменных для ваших входных параметров. Определяйте один из входных параметров как переменная, которая хранит объект главного приложения. Затем нажмите ОК.

    Добавьте код к обратному вызову StartupFcn, чтобы сохранить значение mainapp.

    function StartupFcn(app,mainapp,sz,c)
        % Store main app object
        app.CallingApp = mainapp;
    
        % Process sz and c inputs
        ...
    end

    Для полностью закодированного примера обратного вызова StartupFcn см. Приложение Графического изображения, Которое Открывает Диалоговое окно.

  2. Вызовите приложение диалогового окна из обратного вызова в главном приложении. Откройте главное приложение в Представление кода и добавьте функцию обратного вызова для кнопки Options. Этот обратный вызов отключает кнопку Options, чтобы препятствовать тому, чтобы пользователи открыли несколько диалоговых окон. Затем, это заставляет значения передавать диалоговому окну, и затем это вызывает приложение диалогового окна с входными параметрами и выходным аргументом. Выходным аргументом является объект приложения диалогового окна.

    function OptionsButtonPushed(app,event) 
        % Disable Plot Options button while dialog is open
        app.OptionsButton.Enable = 'off';
    
        % Get szvalue and cvalue
        % ....
        
        % Call dialog box with input values
        app.DialogApp = DialogAppExample(app,szvalue,cvalue);
    end

  3. Задайте свойство в главном приложении, чтобы сохранить приложение диалогового окна. При хранении главного приложения открытым, создайте частную собственность под названием DialogApp. Выберите Property> Private Property во вкладке Editor. Затем измените имя свойства в блоке properties к DialogApp.

    properties (Access = private)
           DialogApp % Dialog box app
    end

Возвратите информацию в главное приложение

Выполните эти шаги, чтобы возвратить выборы пользователя в главное приложение.

  1. Создайте государственную функцию в главном приложении, которое обновляет пользовательский интерфейс. Откройте главное приложение в Представление кода и выберите Function> Public Function во вкладке Editor.

    Поменяйте имя функции по умолчанию на желаемое имя и добавьте входные параметры для каждой опции, которую вы хотите передать от диалогового окна до главного приложения. Аргумент app должен быть первым, поэтому задать дополнительные аргументы после того аргумента. Затем добавьте код к функции, которая обрабатывает входные параметры и обновляет главное приложение.

    function updateplot(app,sz,c) 
        % Process sz and c 
        ...
    end

    Для полностью закодированного примера государственной функции см. Приложение Графического изображения, Которое Открывает Диалоговое окно.

  2. Создайте свойство в приложении диалогового окна, чтобы сохранить главное приложение. Откройте приложение диалогового окна в Представление кода и создайте частную собственность под названием CallingApp. Выберите Property> Private Property во вкладке Editor. Затем измените имя свойства в блоке properties к CallingApp.

    properties (Access = private)
            CallingApp % Main app object
    end

  3. Вызовите государственную функцию из обратного вызова в приложении диалогового окна. При хранении приложения диалогового окна открытым, добавьте функцию обратного вызова для кнопки OK.

    В этом обратном вызове передайте свойство CallingApp и выборы пользователя к государственной функции. Затем вызовите функцию delete, чтобы закрыть диалоговое окно.

    function ButtonPushed(app,event)
       % Call main app's public function
       updateplot(app.CallingApp,app.EditField.Value,app.DropDown.Value);
    
       % Delete the dialog box  
       delete(app)                  
    end

Управляйте Windows When They Close

Оба приложения должны выполнить определенные задачи, когда пользователь закрывает их. Перед завершениями диалогового окна это должно повторно включить кнопку Options в главном приложении. Перед завершениями главного приложения это должно гарантировать, что приложение диалогового окна также закрывается.

  1. Откройте приложение диалогового окна в Представление кода, щелкните правой кнопкой по объекту app.UIFigure в Component Browser и выберите Callbacks> обратный вызов Add CloseRequestFcn. Затем добавьте код, который повторно включает кнопку в главном приложении и закрывает приложение диалогового окна.

    function DialogAppCloseRequest(app,event)
       % Enable the Plot Options button in main app
       app.CallingApp.OptionsButton.Enable = 'on';
                
       % Delete the dialog box 
       delete(app)             
    end

  2. Откройте главное приложение в Представление кода, щелкните правой кнопкой по объекту app.UIFigure в Component Browser и выберите Callbacks> обратный вызов Add CloseRequestFcn. Затем добавьте код, который удаляет оба приложения.

    function MainAppCloseRequest(app,event)
       % Delete both apps
       delete(app.DialogApp)
       delete(app)              
    end

Пример: Графическое изображение приложения, которое открывает диалоговое окно

Это приложение состоит из основного приложения графического изображения, которое имеет кнопку для выбора опций в диалоговом окне. Кнопка Options вызывает приложение диалогового окна с входными параметрами. В диалоговом окне обратный вызов для кнопки OK передает выборы пользователя обратно в главное приложение путем вызывания государственной функции в главном приложении.

Похожие темы

Была ли эта тема полезной?