Шаг 29.
Microsoft Visual C++ 2010. Начала.
Базовые компоненты. Компонент CheckBox

    На этом шаге мы рассмотрим свойства и приведем пример использования этого компонента.

    Компонент CheckBox (рисунок 1) представляет флажок, который может находиться в одном из двух состояний: выбранном или невыбранном.


Рис.1. Компонент CheckBox

    Часто вместо "выбранный" говорят "установленный", а вместо "невыбранный" — "сброшенный" или "выключенный". Рядом с флажком, как правило, находится поясняющий текст. Компоненты CheckBox обычно используют для выбора нескольких опций из ряда возможных.

    Свойства компонента CheckBox приведены в таблице 1.

Таблица 1. Свойства компонента CheckBox
Свойство Описание
Text Текст, поясняющий назначение флажка
Checked Состояние (вид) флажка. Если флажок выбран, то значение свойства равно True. Если флажок сброшен, то значение свойства равно False
TextAllign Положение текста в поле отображения текста. Текст может располагаться в центре поля (MiddleCenter), быть прижат к левой (MiddleLeft) или правой (MiddleRight) границе. Можно задать и другие способы размещения текста надписи (TopLeft, TopCenter, TopRight, BottomLeft, BottomCenter, BottomRight)
CheckAllign Положение флажка в поле компонента. Флажок может быть прижат к левой верхней границе (TopLeft), прижат к левой границе и находиться на равном расстоянии от верхней и нижней границ поля компонента (MiddleLeft). Есть и другие варианты размещения флажка в поле компонента
Enabled Свойство позволяет сделать флажок недоступным (False)
Visible Свойство позволяет скрыть (False) флажок
AutoCheck Свойство определяет, должно ли автоматически изменяться состояние флажка в результате щелчка на его изображении. По умолчанию значение равно True
FlatStyle Стиль (вид) флажка. Флажок может быть обычным (Standard), плоским (Flat) или "всплывающим" (Popup). Стиль определяет поведение флажка при позиционировании указателя мыши на его изображении
Appearance Определяет вид флажка. Флажок может выглядеть обычным образом (Normal) или как кнопка (Button)
Image Картинка, которая отображается в поле компонента
ImageAlign Положение картинки в поле компонента. Картинка может располагаться в центре (MiddleCenter), быть прижата к левой (MiddleLeft) или правой (MiddleRight) границе. Можно задать и другие способы размещения картинки на кнопке (TopLeft, TopCenter, TopRight, BottomLeft, BottomCenter, BottomRight)
ImageList Набор картинок, используемых для обозначения различных состояний кнопки. Представляет собой объект типа ImageList. Чтобы задать значение свойства, в форму приложения следует добавить компонент ImageList
ImageIndex Номер (индекс) картинки из набора ImageList, которая отображается в поле компонента

    Состояние флажка изменяется в результате щелчка на его изображении (если значение свойства AutoCheck равно True). При этом возникает событие CheckedChanged, а потом событие Click. Если значение свойства AutoCheck равно False, то в результате щелчка на флажке возникает событие Click, а затем, если процедура обработки этого события изменит состояние кнопки, возникает событие CheckedChanged.

    Следующая программа (ее окно приведено на рисунке 2, а текст — в листинге ниже) демонстрирует использование компонента CheckBox.


Рис.2. Окно программы "Комплектация"

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

private: System::Void button1_Click(System::Object^  sender, 
	System::EventArgs^  e) {
	double cena; // цена в базовой комплектации 
	double dop; // сумма за доп. оборудование 
	double discount; // скидка 
	double total; // общая сумма 
	cena = 415000; 
	dop = 0; 
	if (checkBox1->Checked) 
	{ 
		// коврики 
		dop += 1200; 
	}
	if (checkBox2->Checked) 
	{ 
		// защита картера 
		dop += 4500; 
	} 
	if (checkBox3->Checked) 
	{ 
		// зимние шины 
		dop += 12000; 
	} 
	if (checkBox4->Checked) 
	{ 
		// литые диски 
		dop += 12000; 
	} 
	total = cena + dop; 
	System::String ^st; 
	st = "Цена в выбранной комплектации: " + total.ToString("C"); 
	if (dop != 0) 
	{ 
		st += "\nВ том числе доп. оборудование: " + 
		dop.ToString("C"); 
	} 
	if ((checkBox1->Checked) && (checkBox2->Checked) && 
		(checkBox3->Checked) && (checkBox4->Checked)) 
	{ 
		// Скидка предоставляется, если 
		// выбраны все опции 
		discount = dop * 0.1; 
		total = total - discount; 
		st += "\nСкидка на доп. оборудование (10%): " + 
			discount.ToString("C") + 
			"\nИтого: " + total.ToString("C"); 
	} 
	label2->Text = st; 
}

private: System::Void checkBox1_Click(System::Object^  sender, 
	System::EventArgs^  e) {
	label2->Text = ""; 
}

    Для отображения картинки в окне программы "Комплектация" используется компонент PictureBox. Картинка загружается в компонент из файла, который должен находиться в том же каталоге, что и выполняемый файл. Картинка загружается во время работы программы. Делает это конструктор формы:

Form1(void)
{
	InitializeComponent();
	//
	//TODO: добавьте код конструктора
	//
	this->pictureBox1->Image =
		Image::FromFile(Application::StartupPath+"\\Lacetti_r.jpg");
}
Архив проекта можно взять здесь.

    Если картинка находится в папке иллюстраций пользователя (Мои рисунки), то получить путь к файлу иллюстрации можно, вызвав функцию System::Environment::GetFolderPath(System::Environment::SpecialFolder:: MyPictures).

    На следующем шаге мы рассмотрим компонент RadioButton.




Предыдущий шаг Содержание Следующий шаг