Отключение и скрытие элементов управления диалогового окна

Об отключении и скрытии элементов управления

Simulink® включает API индивидуальные настройки, который позволяет отключать и скрывать элементы управления (также называемые widgets), такие как текстовые поля и кнопки, в большинстве диалоговых окон. API индивидуальные настройки позволяет вам отключать или скрывать элементы управления на целом классе диалоговых окон, например, диалоговых окнах параметров, посредством одного вызова метода.

Прежде чем настраивать диалоговое окно Simulink или класс диалоговых окон, сначала убедитесь, что диалоговое окно или класс диалоговых окон настраиваются. Любое диалоговое окно, отображаемое в диалоговой панели Model Explorer, можно настроить. В сложение любое диалоговое окно с идентификаторами диалоговых окон и виджетов можно настроить. Чтобы определить, является ли диалоговое окно настраиваемым, откройте диалоговое окно, включите отображение диалогового окна и идентификатора виджета (см. Идентификаторы виджета) и наведите указатель мыши на виджет. Если отображается идентификатор виджета, можно настроить диалоговое окно.

Когда вы определите, что диалоговое окно или класс диалоговых окон настраиваемы, запишите MATLAB® код для настройки диалоговых окон. Это предполагает запись функций обратного вызова, которые отключают или скрывают элементы управления для определенного диалогового окна или класса диалоговых окон (см. «Запись функций индивидуальной настройки управления обратным вызовом») и регистрацию функций обратного вызова с помощью менеджера индивидуальной настройки (см. «Управление регистрацией функций индивидуальной настройки обратного вызова»). Simulink вызывает функции обратного вызова, чтобы отключить или скрыть элементы управления каждый раз, когда вы открываете диалоговые окна.

Отключение кнопки в диалоговом окне

Это sl_customization.m Файл отключает кнопку Browse на панели Code Generation диалогового окна Параметров конфигурации для любой модели, имя которой содержит 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

Чтобы протестировать эту индивидуальную настройку:

  1. Сохраните sl_customization.m файл по пути MATLAB.

  2. Обновите индивидуальные настройки путем ввода sl_refresh_customizations в командной строке или путем перезапуска MATLAB (см. «Регистрация индивидуальных настроек»).

  3. Откройте модель sldemo_engine в примере Modeling Engine Timing Using Triggered Subsystems.

  4. Откройте диалоговое окно Параметров конфигурации и проверьте Code Generation панели, чтобы увидеть, отключена ли кнопка Browse.

Запись функций обратного вызова индивидуальной настройки управления

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

Объект диалогового окна также предоставляет доступ к объектам, содержащим информацию о текущей модели. Функция обратного вызова может использовать эти объекты, чтобы определить, отключать или скрывать элементы управления. Например, эта функция обратного вызова использует эти объекты, чтобы отключить кнопку Browse на панели Code Generation диалогового окна Параметры конфигурации для любой модели, имя которой содержит 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

Откройте диалоговое окно, содержащее элемент управления, и наведите указатель мыши на элемент управления, чтобы отобразить всплывающую подсказку с идентификатором виджета. Например, наведение указателя мыши на поле Start time на панели Solver диалогового окна Configuration Parameters показывает, что идентификатор виджета для поля Start time StartTime.

Примечание

Всплывающая подсказка отображает not customizable для элементов управления, которые не настраиваются.

Регистр управления Индивидуальной настройки Функций обратного вызова

Чтобы зарегистрировать функции обратного вызова индивидуальной настройки управления для установки Simulink, включите код в sl_customization.m установки файл (см. Регистрация индивидуальных настроек), который вызывает configset.dialog.Customizer.addCustomization метод на коллбэках.

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

Этот пример регистрирует коллбэк, которая отключает кнопку Browse на панели Code Generation диалогового окна Параметров конфигурации (см. «Запись управления Индивидуальной настройки Функций обратного вызова»).

function sl_customization(cm)  

% Disable for standalone Configuration Parameters dialog box 
configset.dialog.Customizer.addCustomization(@disableRTWBrowseButton,cm);

end

Примечание

Регистрация индивидуальной настройки коллбэка приводит к тому, что Simulink вызывает коллбэк для каждого образца класса диалоговых окон, заданных аргументом ID диалогового окна метода. Поэтому можно использовать один коллбэк, чтобы отключить или скрыть элемент управления для всего класса диалоговых окон. В частности, можно использовать один коллбэк, чтобы отключить или скрыть управление для параметра, который является общим для большинства встроенных блоков. Большинство встроенных диалоговых окон блока являются образцами того же диалогового окна супер класса.

Похожие темы