Создайте Multiwindow Приложений в App Designer

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

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

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

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

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

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

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

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

  • Управление Windows, когда они закрываются - запись 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, когда они закрываются

Оба приложения должны выполнять определенные задачи, когда пользователь закрывает их. Перед закрытием диалогового окна необходимо повторно включить кнопку 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 отправляет выбор пользователя обратно в основное приложение, вызывая общедоступную функцию в основном приложении.

Похожие темы

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