Программное изменение свойств

Большинство свойств объектов можно устанавливать программно прямо в ходе работы приложения. Усовершенствуйте приложениеmygui следующим образом. Пусть при запуске доступной является только кнопка Построить, при нажатии на кнопку Построить выводится график и она становится недоступной, зато пользователь может нажать кнопку Очистить для очистки осей, и наоборот.

Решение поставленной задачи требует привлечения свойства Enable. Свойство Enable объекта отвечает за возможность доступа к нему пользователем, значение on разрешает доступ, a off, соответственно, запрещает. Установка значений свойствам объектов в программе производится при помощи функции set.

Функция set вызывается с тремя входными аргументами - указателем на объект, названием свойства и его значением, последние два аргумента заключаются в апострофы. Свойства одного объекта должны изменяться в блоке операторов обработки события Сallback другого объекта. Следовательно, должна иметься возможность доступа к указателю на любой существующий объект. Аргументы hObject и handlesподфункций, которые обрабатывают события элементов управления, содержат требуемые указатели. В hObject хранится указатель на тот объект, событие которого обрабатывается в данный момент, a handles является структурой указателей. Поля структуры совпадают со значениями свойств Tag существующих элементов интерфейса. Например, handles.btnPlot является указателем на кнопку Построить с именемbtnPlot. Доступ к Очистить должен быть запрещен в начале работы приложения, пока пользователь не нажмет Построить Установите в редакторе свойств для кнопки Очистить свойство Enable в off, используйте кнопку со стрелкой в строке со значением свойства. Остальные изменения значения Enable кнопок должны происходить в ходе работы приложения. Для разрешения и запрещения доступа к кнопкам нужно внести дополнения в обработку их событий Callback.

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

  • установку свойства Enable кнопки Очистить в значение on (после вывода графика следует разрешить доступ к Очистить);
  • установку свойства Enable кнопки Построить в значение off (после вывода графика следует запретить доступ к Построить);

Аналогичные изменения произведите в обработке события Callback кнопки Очистить, а именно:

  • установку свойства Enable кнопки Построить в значение on (после очистки осей следует разрешить доступ к Построить);
  • установку свойства Enable кнопки Очистить в значение off (после очистки осей следует запретить доступ к кнопке);

Подфункции btnPlot_Callback и btnClear_Callback должны быть запрограммированы так, как показано на листинге 4.

Листинг 4. Обработка событий Callback кнопок btnPlot и btnClear

function btnPlot_Callback(hObject, eventdata, handles)

% Построение графика функции

x=[-2:0.2:2];

y=exp(-x.^2);

plot(x,y)

% Кнопка Построить должна стать недоступной после вывода графика

set(hObject, 'Enable', 'off')

% Кнопка Очистить должна стать доступной

set(handles.btnClear, 'Enable', 'on')

function btnClear_Callback(hObject, eventdata, handles)

cla % очистка осей

% Кнопка Очистить должна стать недоступной после очистки осей

set(hObject, 'Enable', 'off')

% Кнопка Построить должна стать доступной

set(handles.btnPlot, 'Enable', 'on')

Сохраните изменения в редакторе М-файлов. Запустите приложение mygui и убедитесь, что всегда доступной является только одна из кнопок Построить или Очистить, что является хорошей подсказкой для пользователя о возможных действиях. Закройте окно приложения и редактор приложений.