- •Министерство сельского хозяйства рф
- •Оглавление
- •Введение
- •Лабораторная работа №1 Знакомство с системой. Работа с векторами и матрицами.
- •1.Работа с числами и константами.
- •2.Работа с векторами и матрицами.
- •3.Форматы выдачи на экран.
- •Лабораторная работа №2
- •Лабораторная работа №3 Графический способ решения уравнений. Минимум функции. Интегрирование.
- •1.Решение уравнений.
- •2. Интегрирование.
- •Лабораторная работа №4 Работа с полиномами. Интерполирование.
- •1.Работа с полиномами.
- •2.Приближение по методу наименьших квадратов.
- •3.Интерполяция сплайнами.
- •Лабораторная работа №5 Работа с текстовыми файлами. Работа со структурами.
- •1. Открытие файла, считывание данных и закрытие файла.
- •2.Запись в текстовый файл.
- •Лабораторная работа №6 Создание приложений в среде guide. Часть 1.
- •1.Создание простого приложения.
- •2.Программное изменение свойств.
- •3.Программирование элементов интерфейса. Флаги и рамки.
- •Лабораторная работа №7 Создание приложений в среде guide. Часть 2.
- •4.Переключатели.
- •5.Списки.
- •6.Полосы скроллинга.
- •Библиографический список
5.Списки.
Модернизируйте интерфейс приложения mygui, предоставьте пользователю возможность выбора цвета линии графика из раскрывающегося списка (синий, красный, зеленый). Перейдите в режим редактирования и добавьте при помощи панели управления раскрывающийся список (рис. 6). В редакторе свойств установите свойство Tag в значение 'pmColor'.
Элементами раскрывающегося списка являются строки, которые вводятся в редакторе свойств. Нажмите кнопку в строке со свойством string раскрывающегося списка, появляется окно String. Наберите в нем строки "синий", "красный", "зеленый" (без кавычек), разделяя их при помощи клавиши <Enter> (рис. 7).
Запустите mygui и убедитесь, что раскрывающийся список содержит требуемые строки. Выбор различных строк пока не приводит к изменению цвета линии — требуется запрограммировать событие callback раскрывающегося списка.
Обработка события callback раскрывающегося списка состоит в определении выбора пользователя и соответствующем изменении цвета линии. Свойство списка value содержит номер выбранной строки (строки списка нумеруются с единицы). Перейдите к подфункции pmColor_Callback и запрограммируйте обработку выбора пользователя. Используйте оператор switch для установки цвета линии в зависимости от номера выбранной строки списка.
Рис. 6. Добавление раскрывающегося списка
function varargout = pmColor_Callback(hObject, eventdata, handles, varargin)
% Определение номера выбранной строки
Num = get (hObject, 'Value');
switch Num
case 1
% Выбрана первая строка, следует сделать линию синей
set(handles.line, 'Color', 'b');
case 2
% Выбрана вторая строка, следует сделать линию красной
set(handles.line, 'Color', 'r');
case 3
% Выбрана третья строка, следует сделать линию зеленой
set(handles.line, 'Color', 'g');
end
Запустите приложение, постройте график, нажав на кнопку Построить, и убедитесь в том, что раскрывающийся список позволяет изменять цвет линии графика функции. Несложно заметить, что интерфейс mygui имеет рад недостатков.
Повторное построение графика не учитывает текущий выбор цвета в раскрывающемся списке.
Выбор цвета при отсутствии линии на графике приводит к ошибке (handles.line указывает на несуществующий объект).
Рядом со списком требуется разместить текст, поясняющий назначение списка.
Устраните первый недостаток, поместите в подфункции btnPiot_Callback обработки нажатия кнопки Построить блок switch для задания цвета построенной линии в зависимости от выбора опции раскрывающегося списка.
function varargout = btnPlot Callback(hObject, handles, varargin)
% Определение номера выбранной строки
Num= get(handles.pmColor, 'Value');
% Установка требуемого цвета линии
switch Num
case 1
set (handles, line, 'Color', 'b');
case 2
set(handles.line, 'Color', 'r');
case 3
set(handles.line, 'Color', 'g');
end
Рис. 7. Окно String
Изменение цвета линии при отсутствии графика лишено смысла, поэтому следует запретить доступ пользователя к раскрывающемуся списку, и, напротив, разрешить при построении графика. В начале работы приложения список должен быть недоступен для пользователя. Установите в редакторе свойств для раскрывающегося списка Enable в off. Внесите необходимые дополнения в соответствующие подфункции.
function varargout = btnPlot_Callback(hObject, eventdata, handles, varargin)
…
% Разрешение доступа к раскрывающемуся cписку
set (handles. pmColor, 'Enable', 'on')
function varargout = btnClear_Callback(h, eventdata, handles, varargin)
…
% Запрещение доступа к раскрывающемуся списку
set (handles. pmColor, 'Enable', 'off )
Рис. 8. Добавление текста
Многие элементы интерфейса, в частности раскрывающиеся списки, следует сопровождать поясняющим текстом. Перейдите в режим редактирования и при помощи панели управления разместите текстовую область над списком. Установите в редакторе свойств string в значение цвет линии, а HorizontaiAlignment в значение left для добавленного объекта, используйте кнопки в строках с названиями свойств. Теперь работающее приложение имеет более наглядный интерфейс (рис. 8).
Программирование событий обычных списков производится практически аналогично. Отличие состоит в том, что в обычных списках может быть выделено несколько элементов. Свойство value содержит вектор номеров выбранных элементов. Разрешение выбора нескольких элементов определяется значениями свойств mах и min. Если разность mах — min больше единицы, то пользователь может выделить несколько строк.