Simulink® включает API индивидуальной настройки, который позволяет вам отключать и скрывать средства управления (также называемый widgets), такие как текстовые поля и кнопки, на большинстве диалоговых окон. API индивидуальной настройки позволяет вам отключать или скрывать средства управления на целом классе диалоговых окон, например, диалоговых окон параметра, посредством вызова отдельного метода.
Прежде чем вы настроите диалоговое окно Simulink или класс диалоговых окон, сначала убедитесь, что диалоговое окно или класс диалоговых окон настраиваемы. Любое диалоговое окно, которое появляется в диалоговой панели Model Explorer, настраиваемо. Кроме того, любое диалоговое окно, которое имеет диалоговое окно и идентификаторы виджета, настраиваемо. Чтобы определить, настраиваемо ли диалоговое окно, откройте диалоговое окно, включите диалоговое окно и отображение ID виджета (см. идентификаторы Виджета), и наведите на виджет. Если ID виджета появляется, можно настроить диалоговое окно.
Если вы решили, что диалоговое окно или класс диалоговых окон настраиваемы, запишите код 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 модель в Синхронизации Engine Моделирования Используя пример Триггируемых подсистем.
Откройте диалоговое окно 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. Чтобы определить ID виджета для конкретного управления, выполните следующий код в командной строке:
cm = sl_customization_manager; cm.showWidgetIdAsToolTip = true
Откройте диалоговое окно, которое содержит управление, и наведите на управление, чтобы отобразить подсказку, перечисляющую ID виджета. Например, наведение на поле Start time на панели Solver диалогового окна Configuration Parameters показывает, что ID виджета для поля Start time является StartTime
.
Примечание
Подсказка отображает not customizable
для средств управления, которые не настраиваемы.
Чтобы указать функции обратного вызова индивидуальной настройки управления для установки Simulink, включайте код в установку sl_customization.m
файл (см. Индивидуальные настройки Регистрации), который вызывает configset.dialog.Customizer.addCustomization
метод на коллбэках.
Этот метод берет в качестве аргумента указатель на функцию обратного вызова, чтобы указать. Вызов этого метода заставляет зарегистрированную функцию быть вызванной, прежде чем диалоговое окно будет открыто.
Этот пример указывает коллбэк, который отключает кнопку Browse на панели Code Generation диалогового окна Configuration Parameters (см. Функции обратного вызова Индивидуальной настройки Управления Записью).
function sl_customization(cm) % Disable for standalone Configuration Parameters dialog box configset.dialog.Customizer.addCustomization(@disableRTWBrowseButton,cm); end
Примечание
Регистрация коллбэка индивидуальной настройки заставляет Simulink вызывать коллбэк для каждого экземпляра класса диалоговых окон, заданных аргументом диалогового окна ID метода. Можно поэтому использовать один коллбэк, чтобы отключить или скрыть управление для целого класса диалоговых окон. В частности, можно использовать один коллбэк, чтобы отключить или скрыть управление для параметра, который характерен для большинства встроенных блоков. Большинство встроенных диалоговых окон блока является экземплярами того же суперкласса диалогового окна.