Для создания пользовательского интерфейса используется также объект uicontrol. Самое важное свойство этого объекта – style. При различных значениях этого свойства объект uicontrol на экране выглядит по-разному. Каждый вариант свойства style в конструкторе графического интерфейса GUIDE реализован как отдельный элемент управления.
Таблица 12. Возможные варианты свойства style | |
Название | Значение |
text | Графический объект со статическим текстом. Чаще всего используется для вывода текстовой информации, в том числе изменямой в процессе выполнения программы |
edit | Графический объект с редактируемым текстом. Чаще всего используется для взаимодействия с пользователем, когда нужно чтение введенных с клавиатуры символов |
frame | Прямоугольная область для группировки и визуального выделения других графических объектов. В текущей версии MATLAB рекомендуется группировку объектов производить с помощью uipanel или uibuttongroup |
lisbox | Графический объект, содержащий список. Используется чаще всего для организации возможности выбора одного из нескольких заранее запрограммированных случаев |
popupmenu | Раскрывающийся список - при отображении на экране подобен listbox, но в каждый момент отображает только текущий выбор |
pushbutton | Стандартная командная кнопка |
radiobutton | Переключатель. Удобен для организации выбора только одного варианта из всех |
checkbox | Флаг. Позволяет организовывать множественный выбор из всех вариантов |
slider | Стандартная полоса прокрутки. Удобна для выбора значения из заранее установленного диапазона, с заранее установленным шагом |
togglebutton | Командная кнопка, визуальное представление которой меняется в зависимости от того, активирована она или нет |
В любом случае объект uicontrol имеет такие свойства, как Position, Visible, Selected и многие другие, унаследованные от объектов-родителей. Но есть и специфические свойства. Свойство Enable устанавливает доступность объекта в данный момент времени и имеет два возможных значения – ’on’ и ’off’. Если объект имеет свойство Enabled, равное ’off’, то его использование через графический интерфейс в режиме выполнения будет заблокировано. По умолчанию для всех объектов это свойство равно ’on’ (конечно, если вообще присутствует). Свойство TooltipString позволяет определить текст, который будет появляться при наведении мышкой на данный объект. Обычно этот текст является пояснением к используемому элементу. Свойство String определяет текст, видимый на объекте. Например, команда uicontrol(’Style’,’pushbutton’,’String’,’Кнопка’) в консоли MATLAB приведет к созданию графического окна с командной кнопкой в нижней его части. На кнопке будет соответствующая надпись – кнопка. Есть свойства, специфичные для данного стиля объекта. Например, индекс выбранной строки в listbox или шаг ползунка для slider.
Главное свойство всех этих элементов – Callback, определяет, какой программный код будет выполняться при обработке определенных событий, связанных с этим объектом. Рассмотрим пример. В одной из прошлых глав был создан сценарий, строящий траекторию движения тела, брошенного под углом к горизонту. Предположим, соответствующий файл сохранен в одном из каталогов, присутствующих в путях поиска MATLAB с именем ballistika.m. Попробуем создать графическое окно, в котором присутствовала бы кнопка, запускающая наш сценарий и выводящая в текущее графическое окно траекторию. Может показаться, что нужно слишком долго программировать. На самом деле это не так. Как уже много раз упоминалось, не обязательно вручную создавать объект figure. Он будет создан автоматически, как только создается один из объектов, лежащих ниже по иерархии. Кнопка таким объектом и является. Значит, всё что нужно – это создать кнопку и её свойству Callback присвоить значение ’ballistika’. В консоли MATLAB нужно просто ввести uicontrol(’Style’,’pushbutton’,’String’,’Кнопка’,’Callback’,’ballistika’). Будет создано графическое окно с кнопкой. Нажмите на неё и убедитесь в выполнении выбранного сценария. Конечно, это простейший пример, и мы скоро его немного усложним. Важно, что предметная простота примера вполне соответствует его программной реализации.
Еще один важный объект – uicontextmenu, он позволяет создать пользовательские контекстные меню, доступные при нажатии правой кнопки мыши. Соответствующие меню можно создать для каждого объекта внутри графического окна. Непосредственно элементы меню создаются функцией uimenu, синтаксис вызова которой имеет вид uimenu(uicontextmenu,’Label’, ’name’,’callback’,’function’)]. В примере 47 продемонстрирован результат создания контекстного меню, позволяющего изменять цвет линии графика, полученного в результате работы сценария ballistika.m