Учебное пособие: Создание графического интерфейса пользователя
errordlg('Неизвестный формат файла с данными', 'Ошибка!')
end
Меню графического окна
Приложение MatLab может использовать стандартное меню графического окна. Среда GUIDE позволяет программисту дополнять стандартное меню или создать собственные меню. Свойство MenuBar окна приложения (объекта figure) отвечает за наличие стандартных меню File, Edit, Tools, Window и Help в работающем приложении. Значение figure данного свойства соответствует отображению стандартных меню, а none приводит к приложению без строки с меню. Вне зависимости от значения свойства MenuBar, разработчик приложения имеет возможность размещать собственные меню, которые в случае значения figure добавляются к стандартным меню графического окна. Размещение и программирование меню производится при помощи редактора меню.
Создание меню в редакторе
Перейдите в режим редактирования приложения в среде GUIDE. Принцип конструирования меню проще всего понять, создавая новое меню - убедитесь, что свойство MenuBar графического окна установлено в none. Запустите редактор меню из панели управления (или выбором пункта меню Tools->Menu Editor…), появляется окно Menu Editor, изображенное на рис. 14.
Окно редактора меню содержит две вкладки: Menu Bar, предназначенную для создания строки меню приложения, и Context Menus для контекстного меню. Области навигатора и свойств элементов меню пока пустые. Создайте меню, нажав соответствующую кнопку на панели инструментов редактора меню (убедитесь, что выбрана вкладка Menu Bar), в навигаторе появилась строка Untitled 1, сделайте ее текущей щелчком мыши. В области свойств находятся строки ввода (рис. 15).
Рис.14 Редактор меню Guide Menu Editor
Рис. 15. Задание свойств меню в редакторе
Строка Label служит для задания надписи меню или пункта меню, a Tag -для определения названия созданного объекта. Введите текст "График" в строку Label (без кавычек) и задайте имя mnGraph. Запустите приложение mygui и убедитесь в наличии меню График. Выбор меню График в работающем приложении не приводит к раскрытию меню, следует создать пункты меню. Перейдите в режим редактирования, сделайте текущей строку График в навигаторе редактора меню и добавьте пункт, нажав соответствующую кнопку на панели инструментов редактора меню. Установите надпись пункта Построить и дайте ему имя mnGraphPlot. Добавьте еще один пункт меню, сделав предварительно текущей строку График в навигаторе. Аналогичным образом задайте надпись Очистить и имя mnGraphClear. Навигатор меню должен содержать структуру, изображенную на рис. 16. Меню График имеет первый уровень, а пункты Построить, Очистить - второй.
Рис.16 Иерархия элементов меню
Запустите приложение mygui. Выбор меню График приводит к раскрытию меню. Пока при обращении к пунктам Построить и Очистить ничего не происходит, следует запрограммировать события Callback пунктов меню. Событие Callback самого меню График не требует обработки, т. к. происходит автоматическое раскрытие меню.
Программирование пунктов меню
Выбор элемента меню в навигаторе редактора меню приводит к отображению его свойств на панели Properties. Строка ввода Callback предназначена для вызова подфункции М-файла приложения, содержащего обработку событии элементов интерфейса.
В соответствующем приложению M-файле автоматически создаются подфункции обработки Callback созданных элементов меню. Программисту, как и в случае создания других элементов управления, следует наполнить их содержимым - операторами, производящими требуемые действия.
Откройте файл mygui.m в редакторе М-файлов и определите две подфункции для созданных элементов меню.
Листинг 12. Программирование пунктов меню
function mnGraphPlot_Callback(hObject, eventdata, handles)
% Вызываем обработчик нажатия кнопки Построить
btnPlot_Callback(hObject, eventdata, handles)
% Кнопка Построить должна быть недоступна
set(handles.btnPlot,'Enable','off')
% Кнопка Очистить должна быть доступна
set(handles.btnClear,'Enable','on')