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

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

    Компонент GroupBox (рисунок 1) представляет собой контейнер для других компонентов.


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

    Обычно он используется для объединения в группы компонентов RadioButton по функциональному признаку.

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

Таблица 1. Свойства компонента GroupBox
Свойство Описание
Text Заголовок - текст, поясняющий назначение компонентов, которые находятся в поле компонента GroupBox
Enabled Позволяет управлять доступом к компонентам, находящимся в поле (на поверхности) компонента GroupBox. Если значение свойства равно False, то все находящиеся в поле GroupBox компоненты недоступны
Visible Позволяет скрыть (сделать невидимым) компонент GroupBox и все компоненты, которые находятся на его поверхности

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


Рис.2. Форма программы "Фото-2"

    Компоненты RadioButton принадлежат к двум разным группам (находятся в полях разных компонентов GroupBox). Это позволяет установить в выбранное состояние два переключателя одновременно, по одному в каждой группе. Значения свойств компонентов GroupBox и RadioButton приведены в таблице 2.

Таблица 2. Значения свойств компонентов
Свойство Значение
groupBox1.Text Формат
radioButton1.Text 9 х 12
radioButton1.Checked True
radioButton2.Text 10 х 15
radioButton3.Text 18 х 24
groupBox2.Text Бумага
radioButton4.Text глянцевая
radioButton4.Checked True
radioButton5.Text матовая

    Программа "Фото-2" (компоненты GroupBox и RadioButton):

// Щелчок на радиокнопке. 
// Функция обрабатывает событие Click компонентов 
// radioButton1, ..., radioButton5
private: System::Void radioButton_Click(System::Object^ sender, 
	System::EventArgs^ e) 
{ 
	label2->Text = ""; 
	// установить курсор в поле Количество 
	textBox1->Focus(); 
} 

private: System::Void button1_Click(System::Object^  sender, 
             System::EventArgs^  e) {
        double cena = 0 ; // цена 
        int n; // количество фотографий 
        double sum; // сумма 
	String^ format; // формат 
	String^ paper; // бумага 
	// формат 
	if (radioButton1->Checked) 
	{ 
		format = "9x12"; 
		cena = 3.50; 
	}
	if (radioButton2->Checked) 
	{ 
		format = "10x15"; 
		cena = 4.50; 
	} 
	if (radioButton3->Checked) 
	{ 
		format = "18x24"; 
		cena = 12.0; 
	} 
	// бумага 
	if (radioButton4->Checked) 
	{ 
		paper = "глянцевая"; 
	} 
	if (radioButton5->Checked) 
	{ 
		paper = "матовая"; 
		cena = cena + 0.5; 
	} 
	n = Convert::ToInt32(textBox1->Text); 
	sum = n * cena; 
	label2->Text = "Формат: " + format + 
	"\nБумага: " + paper + 
	"\nЦена: " + cena.ToString("c") + 
	"\nКоличество: " + n.ToString() + " шт.\n" + 
	"Сумма заказа: " + sum.ToString("C"); 
 }

private: System::Void textBox1_TextChanged(System::Object^  sender, 
               System::EventArgs^  e) {
	if (textBox1->Text->Length == 0) 
		button1->Enabled = false; 
	else 
		button1->Enabled = true; 
	label2->Text = ""; 
 }

private: System::Void textBox1_KeyPress(System::Object^  sender, 
                  System::Windows::Forms::KeyPressEventArgs^  e) {
	if ((e->KeyChar >= '0') && (e->KeyChar <= '9')) 
		return; 
	if (Char::IsControl(e->KeyChar)) 
	{ 
		if (e->KeyChar == (char)Keys::Enter) 
		{ 
			// нажата клавиша <Enter> 
			button1->Focus(); 
		} 
		return; 
	} 
	// остальные символы запрещены 
	e->Handled = true; 
 }
Архив проекта можно взять здесь.

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




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