Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Связывание переключателей с кодом программы




Откройте метод OnRadio1():

void CChecksDlg::OnRadio1()

{

 // TODO: добавьте код для обработки оповещений от элемента

}

Созданный обработчик будет вызываться, когда пользователь щелкает переключатель 1. В нем мы сообщим о действии пользователя, помещая в текстовое поле строку "Щелчок на 1 переключателе":

void CChecksDIg::OnRadiol()

{

         m_text = "Щелчок на 1 переключателе";

        UpdateData(false);

}

Координация работы переключателей

Обратите внимание: при установке переключателя метод-обработчик не предпринимает никаких попыток снять остальные переключатели. Дело в том, что три переключателя уже действуют как единая группа — они принадлежат одному окну, которое координирует их поведение. Когда пользователь щелкает на одном из переключателей, программа автоматически снимает остальные. Если бы мы воспользовались групповыми полями, как в следующем примере, можно было бы осуществить дальнейшую группировку переключателей, чтобы в любой момент в каждой подгруппе был установлен лишь один переключатель.

Добавим код для второго и третьего переключателей:

void CChecksDIg::OnRadio2()

{

m_text = "Щелчок на 2 переключателе";

  UpdateData(false);

}

void CChecksDIg::OnRadio3()

{

m_text = "Щелчок на 3 переключателе";

UpdateData(false);

}

Программа radios готова. Запустите ее и щелкните, на каком-нибудь переключателе. Программа сообщает, на каком переключателе был сделан щелчок.

Вы можете щелкать на переключателях в любой последовательности — устанавливается всегда лишь тот, который был щелкнут последним. Мы научились работать с переключателями в Visual C++!

ПОДСКАЗКА: Чтобы получить или задать состояние переключателя в программе, следует воспользоваться методами GetState() или SetState().

Мы рассмотрели работу с флажками и переключателями по отдельности, но ещу не пытались организовать их совместное использование. Поскольку по своим возможностям эти управляющие элементы дополняют друг друга (флажкипозволяют выбрать любые варианты из списка, а переключатели ограничивают выбор пользователя всего одним), они часто используются вместе, примеромчего станет наша следующая программа.

Совместное использование флажков и переключателей 

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

Программа должна определить, какие цветы входят в букет, установить соответствующие флажки и вывести цену 6укета.

Если пользователь выбирает другой тип букета, программа должна показать, какие цветы в него входят, и вывести цену.

В этом примере "исключительность" переключателей сочетается со "свободой выбора", предоставляемой флажками. Давайте займемся созданием программы.

Назовем ее seller. При помощи AppWizard создайте новый проект на базе диалогового окна, затем откройте в редакторе диалоговых окон окно с идентификатором IDD_SELLER_DIALOG.

После удаления надписи TODO необходимо добавить в окно два групповых поля.

Использование групповых полей 

Групповые поля предназначены для группировки элементов — как визуально, так и функционально. В частности, все переключатели внутри группового поля работают совместно, что позволяет вам разместить в диалоговом окне несколько независимых групп переключателей. Чтобы включить в диалоговое окно программы seller два групповых поля, просто перетащите их из палитры (третий инструмент сверху в левом столбце) в диалоговое окно.

Редактор диалоговых окон снабжает созданные групповые поля подписью Staticоднако ее можно изменить:     

1. Щелкните на групповом поле правой кнопкой мыши в редакторедиалоговых окон.    

2. Выберите в контекстном меню команду Properties

3. Введите в поле Caption новую подпись. Не забудьте выделить групповое поле, щелкая правой кнопкой на подписи, иначе будут выведены свойства диалогового окна в целом.   

В примере левое групповое поле называется Букет, а правое — Цветы.

Мы хотим, чтобы Пользователь выбирал тип букета с помощью переключателя, а программа обозначала входящие в него цветы, устанавливая нужные флажки. Добавьте в группу Букетчетыре переключателя, а в группу Цветы— четыре флажка и присвойте им соответствующие подписи.

С помощью редактора диалоговых окон выровняйте управляющие элементы по горизонтали и вертикали, по аналогии с предыдущими примерами.

Добавьте в диалоговое окно текстовое поле. В ClassWizard создайте для него переменнуюm_text, чтобы упростить работу с его содержимым. Кроме того, свяжите с каждым переключателем метод-обработчик (от OnRadio1()до OnRadio4()) и откройте OnRadio1():   

void CSellerDlg::OnRadio1()  

{

 // TODO: добавьте код для обработки оповещений от элемента         

}

При установке переключателя необходимо расставить маркеры во флажках. Предположим, первый переключатель должен устанавливать все флажки. Но как изменить состояние флажков в программе?










Последнее изменение этой страницы: 2018-04-12; просмотров: 354.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...