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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. Вызовите приложение диалогового окна из коллбэка в главном приложении. Откройте главное приложение в Code View и добавьте функцию обратного вызова для кнопки 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. Создайте государственную функцию в главном приложении, которое обновляет пользовательский интерфейс. Откройте главное приложение в Code View и выберите Function> Public Function во вкладке Editor.

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

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

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

  2. Создайте свойство в приложении диалогового окна, чтобы сохранить главное приложение. Откройте приложение диалогового окна в Code View и создайте частную собственность под названием 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. Откройте приложение диалогового окна в Code View, щелкните правой кнопкой по объекту app.UIFigure по Component Browser и выберите Callbacks> Add CloseRequestFcn callback. Затем добавьте код, который повторно включает кнопку в главном приложении и закрывает приложение диалогового окна.

    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. Откройте главное приложение в Code View, щелкните правой кнопкой по объекту app.UIFigure по Component Browser и выберите Callbacks> Add CloseRequestFcn callback. Затем добавьте код, который удаляет оба приложения.

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

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

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

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте