Флаги и рамки

Флаги позволяют произвести одну или несколько установок, определяющих ход работы приложения. Продолжите работу над mygui, предоставив пользователю возможность наносить линии сетки на график. Окно приложения должно содержать два флага с названиями сетка по х и сетка по у. Если пользователь нажимает кнопку Построить, то на оси наносится сетка по выбранным координатам. Нажатие на Очистить должно приводить не только к исчезновению графика функции, но и скрытию сетки.

Обычно несколько элементов управления со схожим назначением группируются и помещаются внутри рамки. Измените размеры осей, освободив справа место для рамки. Нанесите рамку на окно приложения при помощи соответствующей кнопки. В рамку добавьте два флага. Разместите поясняющие подписи рядом с флагами и дайте им имена. Задайте свойству Tag верхнего флага значение chbxGridx, а свойствуstring, отвечающему за подпись флага, значение Сетка по х.

Аналогичным образом определите свойства нижнего флага, установите свойство Tag в chbxGridY, и свойство string в сетка по у. Еслитекст не помещается рядом с флагом, увеличьте ширину области флага при помощи мыши, удерживая нажатой левую кнопку. Сохраните приложение в редакторе приложений для автоматического создания в редакторе М-файлов заготовок для подфункций обработки события добавленных объектов.

Осталось сделать так, чтобы при нажатии пользователем кнопки Построить происходило отображение линий сетки в зависимости от установленных флагов, а нажатие на Очистить приводило к скрытию сетки. Блок обработки события Callback кнопки Построить следует дополнить проверкой состояния флагов. Свойство флага value принимает значение логической единицы при включении флага пользователем, и, соответственно, равно нулю, если флаг выключен. Указатели на флаги содержатся в полях chbxGridX и chbxGridYструктуры handles. Состояние флагов определяет значение свойств XGrid и YGrid осей.

Произведите необходимые изменения в подфункции обработки события Callback кнопки Построить с именем btnPlot (листинг 5).

Листинг 5. Обработка события кнопки btnPlot с учетом состояния флагов

function btnPlot_Callback(hObject, eventdata, handles)

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

x=[-2:0.2:2];

y=exp(-x.^2);

plot (x,y)

%Проверка флага сетка по х

if get(handles.chbxGridX, 'Value')

% Флаг включен, следует добавить линии сетки

set(gca, 'XGrid', 'on')

else

% Флаг выключен, следует убрать линии сетки

set(gca, 'XGrid', 'off')

end

% Проверка флага сетка по х

if get(handles.chbxGridY, 'Value')

% Флаг включен, следует добавить линии сетки

set(gca, 'YGrid', 'on')

else

% Флаг выключен, следует убрать линии сетки

set(gca, 'YGrid', 'off')

end

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

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

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

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

Флаги предоставляют пользователю возможность выбора одной или сразу нескольких опций. Одновременный выбор только одной опции осуществляется при помощи переключателей.