exponenta event banner

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

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

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

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

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

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

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

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

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

  • Управление Windows при закрытии - запись CloseRequest обратные вызовы в обоих приложениях, которые выполняют задачи обслуживания при закрытии окон.

Сведения о реализации всех шагов этого процесса см. в разделе Печать приложения, которое открывает диалоговое окно.

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

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

  1. В приложении диалогового окна определите входные аргументы для startupFcn обратный вызов, а затем добавьте код к обратному вызову. Откройте диалоговое окно приложения в представлении кода. На вкладке Редактор щелкните Аргументы ввода приложения. В диалоговом окне «Входные аргументы приложения» введите разделенный запятыми список имен переменных для входных аргументов. Укажите один из входов как переменную, которая хранит объект главного приложения. Затем нажмите кнопку ОК.

    Добавить код в startupFcn обратный вызов для сохранения значения mainapp.

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

    Для полностью закодированного примера startupFcn обратный вызов см. в разделе Приложение печати, открывающее диалоговое окно.

  2. Вызовите диалоговое приложение из обратного вызова в главном приложении. Откройте главное приложение в представлении кода и добавьте функцию обратного вызова для кнопки «Параметры». Этот обратный вызов отключает кнопку 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. Выберите «Свойство» > «Частное свойство» на вкладке «Редактор». Затем измените имя свойства в properties блок в DialogApp.

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

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

Выполните эти действия, чтобы вернуть выбранные пользователем элементы в главное приложение.

  1. Создайте общедоступную функцию в главном приложении, которая обновляет пользовательский интерфейс. Откройте главное приложение в представлении кода и выберите «Функция» > «Общедоступная функция» на вкладке «Редактор».

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

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

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

  2. Создайте свойство в приложении диалогового окна, чтобы сохранить главное приложение. Откройте приложение диалогового окна в представлении кода и создайте частное свойство с именем CallingApp. Выберите «Свойство» > «Частное свойство» на вкладке «Редактор». Затем измените имя свойства в 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 при закрытии

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

  1. Откройте диалоговое окно приложения в представлении кода, щелкните правой кнопкой мыши значок app.UIFigure в обозревателе компонентов выберите «Обратные вызовы» > «Добавить обратный вызов 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 в обозревателе компонентов выберите «Обратные вызовы» > «Добавить обратный вызов CloseRequestFcn». Затем добавьте код, который удаляет оба приложения.

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

Пример: Приложение печати, открывающее диалоговое окно

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

Связанные темы