Программно добавляйте компоненты пользовательского интерфейса в App Designer

Большинство компонентов пользовательского интерфейса доступны в App Designer Component Library чтобы перетащить мышью на холст. Иногда может потребоваться программное добавление компонентов в Представление кода. Вот несколько распространенных ситуаций:

  • Создание компонентов, которые недоступны в Component Library. Например, приложение, которое отображает диалоговое окно, должно вызвать соответствующую функцию, чтобы отобразить диалоговое окно.

  • Динамическое создание компонентов в соответствии с условиями выполнения.

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

Создайте компонент и назначьте коллбэк

Вызовите функцию, которая создает компонент из существующего коллбэка (список функций UI-компонента см. в приложениях на основе uifigure). The StartupFcn коллбэк - хорошее место для создания компонентов, поскольку этот коллбэк запускается при запуске приложения. В других случаях можно создать компоненты в рамках другой функции обратного вызова. Например, если вы хотите открыть диалоговое окно, когда пользователь нажимает кнопку, вызовите функцию диалогового окна из функции обратного вызова кнопки.

При вызове функции для создания компонента укажите рисунок или один из дочерних контейнеров в качестве родительского объекта. Например, эта команда создает кнопку и задает рисунок как родительский объект. В этом случае рисунок имеет имя по умолчанию, которое App Designer присваивает (app.UIFigure).

b = uibutton(app.UIFigure);

Затем задайте свойство коллбэка компонента как указатель на функцию формы @app.callbackname. Для примера эта команда устанавливает ButtonPushedFcn свойство кнопки b в функцию обратного вызова с именем mybuttonpress.

b.ButtonPushedFcn = @app.mybuttonpress;

Запись коллбэка

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

methods (Access = private)
    
        function mybuttonpress(app,src,event)
            disp('Have a nice day!');
        end
        
end

Чтобы написать коллбэк, который принимает дополнительные входные параметры, задайте дополнительные аргументы после первых трех. Для примера этот коллбэк принимает два дополнительных входа, x и y:

methods (Access = private)
    
        function addxy(app,src,event,x,y)
            disp(x + y);
        end
        
end

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

b.ButtonPushedFcn = {@app.addxy,10,20};

Пример: Диалоговое окно подтверждения с функцией закрытия

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

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

Пример: Приложение, которое заполняет узлы дерева на основе файла данных

Это приложение показывает, как динамически добавлять узлы дерева во время выполнения. Три узла больницы существуют в дереве до запусков приложения. Однако во время выполнения приложение добавляет несколько дочерних узлов под каждым именем больницы. Количество дочерних узлов и меток на дочерних узлах определяется содержимым patients.xls электронная таблица.

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

Похожие темы