Multiwindow-приложение состоит из двух или более приложений, которые делятся данными. Способ обмена данными между приложениями зависит от проекта. Один общий проект включает два приложения: основное приложение и диалоговое окно. Как правило, основное приложение имеет кнопку, которая открывает диалоговое окно. Когда пользователь закрывает диалоговое окно, диалоговое окно отправляет выбор пользователя в главное окно, которое выполняет вычисления и обновление пользовательского интерфейса.
Эти приложения делятся информацией по-разному в разное время:
Когда диалоговое окно открывается, основное приложение передает информацию в диалоговое окно путем вызова приложения диалогового окна с входными параметрами.
Когда пользователь нажимает кнопку OK в диалоговом окне, диалоговое окно возвращает информацию в основное приложение, вызывая общедоступную функцию в основном приложении с входными параметрами.
Чтобы создать приложение, описанное в предыдущем разделе, вы должны создать два отдельных приложения (основное приложение и диалоговое приложение). Затем выполните эти задачи высокого уровня. Каждая задача включает несколько шагов.
Отправить информацию в диалоговое окно - Написание startupFcn
коллбэк в приложении диалогового окна, которое принимает входные параметры. Один из входных параметров должен быть основным объектом приложения. Затем в главном приложении вызовите приложение диалогового окна с входными параметрами.
Возврат информации в Главное приложение - Запись публичной функции в основное приложение, которое обновляет пользовательский интерфейс на основе выбора пользователем в диалоговом окне. Поскольку это публичная функция, диалоговое окно может вызвать его и передать ему значения.
Управление Windows, когда они закрываются - запись CloseRequest
коллбэки в обоих приложениях, которые выполняют задачи обслуживания при закрытии окон.
Чтобы увидеть реализацию всех шагов в этом процессе, смотрите Графическое изображение, которое открывает диалоговое окно.
Выполните эти шаги, чтобы передать значения из основного приложения в диалоговое окно приложения.
В приложении диалогового окна задайте входные параметры для 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
коллбэк, см. Приложение для графического изображения, которое открывает диалоговое окно.
Вызовите приложение диалогового окна из коллбэка в главном приложении. Откройте главное приложение в 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
Задайте свойство в главном приложении, чтобы хранить диалоговое окно. Сохраняя основное приложение открытым, создайте частную собственность под названием DialogApp
. Выберите Property > Private Property на вкладке Editor. Затем измените имя свойства в properties
блокировать в DialogApp
.
properties (Access = private) DialogApp % Dialog box app end
Выполните эти шаги, чтобы вернуть выбор пользователя в основное приложение.
Создайте публичную функцию в основном приложении, которое обновляет пользовательский интерфейс. Откройте основное приложение в Code View и выберите Function > Public Function во вкладке Editor.
Измените имя функции по умолчанию на желаемое имя и добавьте входные параметры для каждой опции, которую вы хотите передать из диалогового окна в главное приложение app
аргумент должен быть первым, поэтому задайте дополнительные аргументы после этого аргумента. Затем добавьте код к функции, которая обрабатывает входы и обновляет основное приложение.
function updateplot(app,sz,c) % Process sz and c ... end
Для полностью закодированного примера публичной функции смотрите Графическое изображение, которое открывает Диалоговое окно.
Создайте свойство в приложении диалогового окна, чтобы сохранить основное приложение. Откройте приложение диалогового окна в Code View и создайте частную собственность под названием CallingApp
. Выберите Property > Private Property на вкладке Editor. Затем измените имя свойства в properties
блокировать в CallingApp
.
properties (Access = private) CallingApp % Main app object end
Вызовите публичную функцию из коллбэка в диалоговом окне. Сохраняя приложение диалогового окна открытым, добавьте функцию обратного вызова для кнопки 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
Оба приложения должны выполнять определенные задачи, когда пользователь закрывает их. Перед закрытием диалогового окна необходимо повторно включить кнопку Options в главном приложении. Прежде чем основное приложение закроется, оно должно убедиться, что приложение диалогового окна также закроется.
Откройте приложение диалогового окна в 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
Откройте основное приложение в 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 отправляет выбор пользователя обратно в основное приложение, вызывая общедоступную функцию в основном приложении.