Создание динамически обновляемых окон диалога


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

 

Для создания такого окна необходимо:

Выделить блок и ввести в командном окне MATLAB следующее выражение:

 

set_param(gcb, 'MaskSelfModifiable', 'on') .

 

После чего модель необходимо сохранить. Данная команда дает разрешение на самомодификацию окна.

 

Ввести вкомандном окне команду вида:

 

set_param(gcb,'MaskCallbacks',{'parm1_callback', ‘’,'parm3_callback'}); ,

 

где в фигурных скобках указываются функции обрабатывающие событие изменения параметра.

 

В данном примере функция parm1_callback обрабатывает событие при изменении первого параметра, а функция parm3_callback обрабатывает событие при изменении третьего параметра. В том случае, если для какого-либо параметра такая обработка не нужна, функция не записывается, но два апострофа для данного параметра (пустая функция) все равно должны указываться. В данном примере обработка события для второго параметра отсутствует. Сама функция может быть любым допустимым выражением на языке MATLAB.

 

Применительно к рассматриваемому функциональному генераторуэта команда выглядит следующим образом:

 

set_param(gcb,'MaskCallbacks',{'call_back_freq','','', 'call_back_magn',''}); .

 

Функция call_back_freq обрабатывает событие при установке или снятии флажка параметра Internal source of frequency signal (тип источника сигнала задания на частоту, переменная Internal_freq), а функция call_back_magn обрабатывает событие при установке или снятии флажка параметра Internal source of magnitude signal (тип источника сигнала задания на амплитуду, переменная Internal_magn). После этого модель необходимо сохранить.




Содержание раздела