Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Визуальные компоненты ListBox, ComboBox, RadioButton и GroupBox.
Список ListBox.Компонент ListBox предназначен для хранения перечня текстовых элементов, например, списка фамилий. Он дает возможность пользователю выбирать элементы из списка, проводить его сортировку и т.д. Основное свойство компонента ListBox – Items. Оно представляет коллекцию строк и имеет следующие основные методы: - Add(s) – добавление элемента s в конец списка; - Clear() – удаление элементов из списка (очистка списка); - Insert(n,s) – вставка элемента s в список под номером n, n – целое число (первый элемент списка имеет номер 0); - Remove(s) – удаление элемента s из списка; - Count – количество элементов в списке (на единицу больше индекса последней строки списка); - Items[n] – возвращает строку списка с номером n, n – целое число. Формирование списка строк можно выполнить двумя способами. Первый способ предусматривает создание первоначального списка на этапе проектирования приложения. Для этого нужно выделить компонент ListBox на форме, в окне Properties выбрать свойство Items и щелкнуть на кнопке с тремя точками. Откроется диалоговое окно String Collection Editor (редактор списка строк), в котором каждую фамилию следует размещать в отдельной строке, заканчивая набор строки нажатием клавиши <Enter>. Второй способ позволяет организовать список непосредственно в процессе выполнения приложения. Для этого необходимо использовать окно редактирования TextBox и кнопку управления. Каждая фамилия вводится в окно редактирования и нажатием кнопки перемещается в окно ListBox. Соответствующий фрагмент программы, реализующий указанную процедуру, расположен ниже. ListBox1->Items->Add(textBox1->Text); textBox1->Text = “”; textBox1->Focus(); Рассмотрим еще несколько полезных свойств, которые используются при работе со списками. Свойство SelectedIndex дает возможность выбирать нужные строки из списка. Для этого необходимо выделить строку в списке щелчком клавиши мыши. При этом значение свойства SelectedIndex станет равным номеру выбранной строки (напомним, что первая строка имеет номер 0). В случае отсутствия выбора SelectedIndex = -1. Ниже приведен фрагмент программы, иллюстрирующий операцию выбора и вывода на экран строки списка. If (ListBox1->ItemIndex < 0) MessageBox::Show (“Выбор не сделан”); Else MessageBox::Show (“Ваш выбор” + “:” + Convert::ToString( listBox1->Items[listBox1->SelectedIndex])); Свойство Sorted позволяет выполнить сортировку списка строк по алфавиту. Для этого необходимо задать значение этого свойства равным true. Выпадающий список ComboBox.Этот компонент является комбинацией редактируемого поля TextBox и списка ListBox: в форме он представляется в виде редактируемого поля с треугольной кнопкой справа. По умолчанию компонент ComboBox появляется в виде однострокового окна типа TextBox (см. Рис.8, слева). Нажатие на эту кнопку осуществляет вывод данных в виде выпадающего списка типа списка ListBox (Рис.8 , справа). Из этого списка можно выбирать элементы, которые затем можно редактировать в редактируемом поле (аналог поля TextBox).
Рис.8 Вид списка ComboBox Основные свойства компонента ComboBox – коллекция строк Items, имеющая те же методы, что и в компоненте ListBox, а также свойство Text, содержащее значение поля редактируемого элемента, извлеченного из списка. Компонент RadioButton (радиокнопка).Этот компонент используется как флажок-переключатель для предоставления возможности выбора одного из нескольких вариантов работы. На рис.9 представлен примерный вид 2-х компонентов:
Рис.9 Вид компонента GroupBox с радиокнопками Оба представленных на Рис. 9 компонента выключены. Для включения одного из них необходимо щелкнуть левой клавишей мыши на кружочке, в котором сразу же появится точка. Следует отметить, что в группе компонентов RadioButton может быть включен только один из них, а остальные будут автоматически выключены. Основное свойство компонента – Checked, принимающее дав значения: true – компонент включен, false – выключен. Компонент GroupBox.Компонент представляет контейнер, который используется для разделения переключателей типа RadioButton на различные группы. В результате включение компонента RadioButton одной группы не повлияет на состояние такой же кнопки в другой группе. Таким образом, если необходимо, чтобы кнопки RadioButton обрабатывали несколько непересекающихся ситуаций, то такие кнопки нужно разместить в разных контейнерах GroupBox. Рассмотрим пример создания приложения, иллюстрирующий работу визуальных компонент, описанных выше в разделе 3.2. На Рис.10 представлена основная форма этого приложения. С помощью кнопки «Ввод» в расположенном ниже ее окне вводится список из нескольких фамилий, который затем упорядочивается либо по алфавиту, либо в обратном порядке (кнопка «Сортировка») . Полученные списки отображаются в окне ListBox (слева) и в окне ComboBox (справа ). Нажатие кнопки «Выбор» позволяет перенести отмеченную мышью строку в списке ListBox в окно редактирования. Рис.10. Пример выполнения программы «Сортировка» Компонент GroupBox с заголовком «Вид сортировки», включает две радиокнопки, задающими способ сортировки. На Рис.10 выбран способ «По алфавиту», о чем свидетельствует наличие точки в соответствующей радиокнопке). Ниже представлен текст функций-обработчиков событий. Обработчик кнопки «Ввод»: private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { listBox1->Items->Add(textBox1->Text); comboBox1->Items->Add(textBox1->Text); textBox1->Text=""; textBox1->Focus(); }
Обработчик кнопки «Сортировка»:
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
int i,n,n1; String ^s,^s1; if(radioButton1->Checked) { listBox1->Sorted=true; comboBox1->Sorted=true; } if(radioButton2->Checked) { listBox1->Sorted=true; listBox1->Sorted=false; comboBox1->Sorted=true; comboBox1->Sorted=false; n=listBox1->Items->Count; for(i=0;i<n;i++) { s=listBox1->Items[0]->ToString(); listBox1->Items->Remove(listBox1->Items[0]); listBox1->Items->Insert(n-1-i,s); s1=comboBox1->Items[0]->ToString(); comboBox1->Items->Remove(comboBox1->Items[0]); comboBox1->Items->Insert(n-i-1,s1); } }
}
Обработчик кнопки «Выбор»:
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { if(listBox1->SelectedIndex<0) MessageBox::Show("Выбор не сделан"); else { MessageBox::Show("Ваш выбор"+":"+ Convert::ToString( listBox1->Items[listBox1->SelectedIndex])); textBox1->Text=Convert::ToString( listBox1->Items[listBox1->SelectedIndex]); } }
Обработчик кнопки «Выход»:
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) { Close(); }
Матрица ячеек DataGridView Компонент DataGridView представляет собой таблицу, содержащую строки. Этот компонент используется для отображения таблиц и матриц. В зависимости от значений свойств компонент DataGridView может использоваться как для ввода, так и для вывода информации. Таблица имеет две полосы прокрутки, что позволяет выводить большие массивы данных. Заголовки столбцов таблицы фиксируются и их положение не меняется при вертикальной прокрутке. Компонент DataGridView находится в палитре Toolbox в разделе Data. После размещения его на форме необходимо сначала задать структуру будущей таблицы. Для этого необходимо щелкнуть мышью стрелку в верхней части компонента для входа в меню проектирования компонента (Рис.11) Рис.11 Визуальная компонента DataGridView Следует выбрать пункт Add Column и в открывшимся диалоговом окне задать в окошке Header Text заголовки столбцов таблицы. Идентификаторы столбцов (name) как правило оставляют без изменений. В примере введены следующие заголовки: Фамилия, Экзамен1, Экзамен2, Экзамен 3. Пункт меню Edit Columns позволяет перейти к редактору столбцов, показанному на Рис.12.
Рис.12 Редактирование столбцов компоненты DataGridView Чаще всего изменяют ширину столбца Width. Для редактирования нужного столбца необходимо выбрать его номер в окне Selected Columns, перейти в окно Column Properties, выбрать соответствующую опцию и внести изменения. Пункты менюEnable Adding, Enable Editing и Enable Deleting разрешают (наличие «галочки») или запрещают производить добавление, редактирование и удаление столбцов таблицы. Целесообразно также изменить имя компонента в окне свойств, например, вместо dataGridView1 использовать более короткое имя dGV1. Это облегчит написание кодов обработчиков событий. Количество строк таблицы задается на этапе выполнения приложения либо в конструкторе формы, либо в одном из обработчиков событий с помощью следующей команды: dGV1->RowCount=5; Также в программе можно добавлять или удалять новые столбцы и строки. Для добавления используется команда dGV1->Columns->Add(st1,st2); где st1, st2 – строки типа String ^, задающие идетификатор и заголовок столбца, соответственно. Удаление столбца производится инструкцией dGV1->Columns->Remove(st1); Добавление строки можно осуществить командой dGV1->Rows->Add(); а удаление с помощью инструкции dGV1->Rows->RemoveAt(n); где n – идекс удаляемой строки. Информацию в ячейки таблицы можно заносить двумя способами. Первый наиболее простой способ – непосредственное заполнение таблицы вручную после запуска при- ложения на выполнение. Второй – заполнение таблицы программным путем. В этом случае для занесения информации в ячейку таблицы с индексами i,j используется следующая инструкция: dGV1->Rows[i]->Cells[j]->Value=inf; где inf – вводимое числовое или строковое значение. Следует отметить, что значения индексов i,j начинаются с нуля. Аналогичной инструкцией производится считывание информации из таблицы с учетом ее типа. Ниже приведены примера чтения из таблицы, соответственно, вещественных и строковых данных: double B = Convert::ToDouble(dGV1->Rows[i]->Cells[j]->Value); String ^ st = Convert::ToString(dGV1->Rows[i]->Cells[j]->Value). Рассмотрим пример работы с матрицей ячеек, в котором реализуется обработка сводной экзаменационной ведомости. Таблица содержит пять столбцов со следующими заголовками: «Фамилия», «Экзамен1», «Экзамен2», «Экзамен3», «Экзамен4». В новую таблицу необходимо перенести данные о студентах , средний балл которых не менее 4. 1. В форме, которой дано название «Успеваемость», формируем две таблицы: исходную и результатов отбора. (Рис.13). Кнопка «Ввод» предназначена для задания количества студентов в ведомости. Кнопка «Выбор» инициирует отбор студентов из исходной таблицы по заданному критерию и перенос сведений о них в таблицу результатов отбора. Кнопка «Выход» обеспечивает прекращение работы. Рис.13 Форма приложения «Успеваемость»
Обработчик кнопки «Ввод»: private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { n = Convert::ToInt32(textBox1->Text); dataGridView1->RowCount= n; dataGridView2->RowCount= n; } Целая переменная n должна быть описана как член класса Form1. Обработчик кнопки «Выбор»: private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { float sr; int k=0; int j; float *a = (float*)calloc(n,sizeof(float)); for(int i=0;i<n;i++) { sr=0; for( j=1;j<5;j++) { a[j-1]=Convert::ToDouble(dataGridView1->Rows[i]->Cells[j]->Value); sr=sr+a[j-1]; } sr=sr/4; if(sr>=4) { for( j=0;j<5;j++) dataGridView2->Rows[k]->Cells[j]->Value=dataGridView1->Rows[i]->Cells[j]->Value; dataGridView2->Rows[k]->Cells[5]->Value=sr; k=k+1; } } } Обработчик кнопки «Выход»: private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { Close(); }
На рис.14 представлен пример выполнения программы для заданного списка студентов. Рис.14 Результат работы приложения «Успеваемость» |
||
Последнее изменение этой страницы: 2018-06-01; просмотров: 575. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |