Simulink ® включает API настройки, который позволяет отключать и скрывать элементы управления (также называемые виджетами), такие как текстовые поля и кнопки, в большинстве диалоговых окон. API настройки позволяет отключать или скрывать элементы управления всего класса диалоговых окон, например диалоговых окон параметров, посредством вызова одного метода.
Перед настройкой диалогового окна Simulink или класса диалоговых окон сначала убедитесь, что это диалоговое окно или класс диалоговых окон можно настроить. Любое диалоговое окно, появляющееся на диалоговой панели Проводника моделей, можно настроить. Кроме того, любое диалоговое окно с идентификаторами диалоговых и виджетов можно настроить. Чтобы определить, можно ли настроить диалоговое окно, откройте его, включите отображение идентификатора диалогового окна и виджета (см. раздел Идентификаторы виджетов) и наведите курсор на виджет. При появлении идентификатора виджета можно настроить диалоговое окно.
После определения того, что диалоговое окно или класс диалоговых окон можно настроить, напишите код MATLAB ® для настройки диалоговых окон. Это предполагает запись функций обратного вызова, которые отключают или скрывают элементы управления для определенного диалогового окна или класса диалоговых окон (см. раздел Функции обратного вызова настройки управления записью), и регистрацию функций обратного вызова с помощью диспетчера настройки (см. раздел Регистрация функций обратного вызова настройки управления регистрацией). Simulink вызывает функции обратного вызова, чтобы отключить или скрыть элементы управления при каждом открытии диалоговых окон.
Это sl_customization.m файл отключает кнопку Обзор (Browse) на панели Создание кода (Code Generation) диалогового окна Параметры конфигурации (Configuration Parameters) для любой модели, имя которой содержит engine.
function sl_customization(cm)
% Disable for standalone Configuration Parameters dialog box
configset.dialog.Customizer.addCustomization(@disableRTWBrowseButton,cm);
end
function disableRTWBrowseButton(dialogH)
hSrc = dialogH.getSource; % Simulink.RTWCC
hModel = hSrc.getModel;
modelName = get_param(hModel,'Name');
if ~isempty(strfind(modelName,'engine'))
% Takes a cell array of widget Factory ID.
dialogH.disableWidgets({'STF_Browser'})
end
endЧтобы проверить эту настройку, выполните следующие действия.
Сохранить sl_customization.m по пути MATLAB.
Обновить настройки путем ввода sl_refresh_customizations в командной строке или путем перезапуска MATLAB (см. раздел Регистрация настроек).
Откройте модель sldemo_engine в примере Modeling Engine Timing Using Triggered Subsystems (Синхронизация механизма моделирования с использованием запускаемых подсистем).
Откройте диалоговое окно Параметры конфигурации (Configuration Parameters) и просмотрите панель Создание кода (Code Generation), чтобы узнать, отключена ли кнопка Обзор (Browse).
Функция обратного вызова для отключения или скрытия элементов управления в диалоговом окне принимает один аргумент: дескриптор объекта диалогового окна, содержащий элементы управления, которые необходимо отключить или скрыть. Объект диалогового окна предоставляет методы, которые функция обратного вызова может использовать для отключения или скрытия элементов управления, содержащихся в диалоговом окне.
Объект диалогового окна также предоставляет доступ к объектам, содержащим информацию о текущей модели. Функция обратного вызова может использовать эти объекты для определения необходимости отключения или скрытия элементов управления. Например, эта функция обратного вызова использует эти объекты для отключения кнопки Обзор (Browse) на панели Создание кода (Code Generation) диалогового окна Параметры конфигурации (Configuration Parameters) для любой модели, имя которой содержит engine.
function disableRTWBrowseButton(dialogH)
hSrc = dialogH.getSource; % Simulink.RTWCC
hModel = hSrc.getModel;
modelName = get_param(hModel,'Name');
if ~isempty(strfind(modelName,'engine'))
% Takes a cell array of widget Factory ID.
dialogH.disableWidgets({'STF_Browser'})
endОбъекты диалогового окна предоставляют следующие способы включения, отключения и скрытия элементов управления:
disableWidgets(widgetIDs)
hideWidgets(widgetIDs)
widgetIDs - массив ячеек идентификаторов виджетов (см. «Идентификаторы виджетов»), указывающих виджеты для отключения или скрытия.
Идентификаторы виджетов определяют элемент управления в диалоговом окне Simulink. Чтобы определить идентификатор виджета для определенного элемента управления, выполните следующий код в командной строке:
cm = sl_customization_manager; cm.showWidgetIdAsToolTip = true
Откройте диалоговое окно, содержащее элемент управления, и наведите курсор на элемент управления, чтобы отобразить подсказку со списком идентификаторов виджета. Например, наведение курсора на поле Время начала на панели Решатель (Solver) диалогового окна Параметры конфигурации (Configuration Parameters) показывает, что идентификатор виджета для поля Время начала (Start time) равен StartTime.

Примечание
Отображается подсказка not customizable для элементов управления, которые не поддаются настройке.
Чтобы зарегистрировать функции обратного вызова настройки управления для установки Simulink, включите код в установку sl_customization.m (см. Регистрация настроек), который вызывает configset.dialog.Customizer.addCustomization метод на обратных вызовах.
Этот метод использует в качестве аргумента указатель на регистрируемую функцию обратного вызова. Вызов этого метода приводит к вызову зарегистрированной функции до открытия диалогового окна.
В этом примере регистрируется обратный вызов, который отключает кнопку Browse на панели Code Generation (создание кода) диалогового окна Configuration Parameters (параметры конфигурации) (см. раздел Write Control Customization Callback Functions (Функции обратного вызова настройки управления записью)).
function sl_customization(cm) % Disable for standalone Configuration Parameters dialog box configset.dialog.Customizer.addCustomization(@disableRTWBrowseButton,cm); end
Примечание
При регистрации обратного вызова настройки Simulink вызывает обратный вызов для каждого экземпляра класса диалоговых окон, указанного аргументом идентификатора диалогового окна метода. Поэтому можно использовать один обратный вызов для отключения или скрытия элемента управления для всего класса диалоговых окон. В частности, можно использовать один обратный вызов для отключения или скрытия элемента управления для параметра, который является общим для большинства встроенных блоков. Большинство встроенных диалоговых окон являются экземплярами одного и того же суперкласса диалогового окна.