- •Лабораторная работа № 1 Тема: Работа с компонентами tLable, tButton, tEdit.
- •Краткая теоретическая часть
- •Задача для самостоятельного решения
- •Лабораторная работа №2 Тема: Работа с компонентами тRadioButtоn, тRadioGroup, tСheckBox.
- •Краткая теоретическая часть
- •Задача для самостоятельного решения
- •Лабораторная работа № 3 Тема: Работа с компонентами tComboBox.
- •Краткая теоретическая часть
- •Лабораторная работа № 4 Тема: Работа с компонентами tTimer, tРrogressBar, tStatusBar
- •Краткая теоретическая часть
- •Задачи для самостоятельного решения
- •Задачи для самостоятельного решения
- •Лабораторная работа № 5 Тема: Работа с компонентами ListBox, OpenDialog, Image.
- •Краткая теоретическая часть
- •Задача для самостоятельного решения
- •Лабораторная работа № 6 Тема: Работа с графикой.
- •Краткая теоретическая часть
Задача для самостоятельного решения
Доход по вкладу
Напишите программу вычисления дохода по вкладу в банке. Доход вычисляется по формуле: Д=С*(СР/360)*(СТ/100), где: С – сумма вклада; СР – срок вклада (количество дней); СТ – процентная ставка (годовых). Рекомендуемый вид формы приведен на рисунке 1.2.
Рисунок 1.2 – Форма программы «Доход по вкладу»
Сила тока
Напишите программу вычисления силу тока в электрической цепи, которая демонстрирует использование обработку исключения «деление на ноль». Рекомендуемый вид формы приведен на рисунке 1.3.
Рисунок 1.3 – Форма программы «Сила тока»
Лабораторная работа №2 Тема: Работа с компонентами тRadioButtоn, тRadioGroup, tСheckBox.
Цель лабораторной работы: освоить использование простейших компонентов-переключателей и создать приложение.
Краткая теоретическая часть
Программист заключает код, который может генерировать порождающую исключение ошибку, в так называемый пробный блок (try-блок). За try-блоком следует один или несколько блоков перехвата (catch-блоков). Каждый catch-блок специфицирует тип исключений, которые он может перехватывать и обрабатывать. Каждый catch-блок содержит обработчик исключений. Если исключительная ситуация соответствует типу параметра в одном из блоков catch, выполняется код этого блока.
Button, RadioButtоn, RadioGroup размещены на странице Standard палитры компонентов, где сосредоточены стандартные для Windows интерфейсные элементы, без которых не обходится практически ни одна программа.
TRadioButton - создает круглую кнопку с двумя состояниями и описательным текстом, специфицирующим ее назначение.
Радио-кнопки представляют набор взаимоисключающих вариантов выбора:
только одна кнопка может быть выбрана в данный момент времени (отмечается внутренним черным кружком), а с ранее выбранной кнопки выбор автоматически снимается. При нажатии радио-кнопки свойство компоненты Checked меняется соответственно и возникает событие OnClick. Обычно радио-кнопки размещаются внутри предварительно установленного на форме группового контейнера. Если выбрана одна кнопка, выбор всех прочих кнопок той же группе автоматически снимается. Например, две радио-кнопки на форме могут быть выбраны одновременно только в том случае, когда они размещены в разных контейнерах. Если группировка радио-кнопок явно не задана, то по умолчанию, все они группируются в одном из оконных контейнеров (TForm, TGroupBox или TPanel).
TRadioGroup - создает контейнер в виде прямоугольной рамки, визуально объединяющий на форме группу логически взаимоисключающих радио-кнопок.
Радио-кнопки "группируются" при помещении их в один и тот же контейнер. Только одна кнопка из данной группы может быть выбрана. Добавление кнопок к компоненте TRadioGroup выполняется редактированием свойства Items. Присвоение названия очередной строке свойства Items приводит к появлению этой кнопки в группирующей рамке. Значение свойства Itemlndex определяет, какая радио-кнопка выбрана в настоящий момент. Вы можете группировать радиокнопки в несколько столбцов, устанавливая соответствующее значение свойства Columns.
TCheckBox - создает квадратный чек-бокс с двумя состояниями и описательным текстом, специфицирующим его назначение. Состояние бокса "check" соответствует выбору некоторого варианта (отмечается перечеркиванием бокса), а состояние "uncheck" соответствует снятию выбору - при этом свойство компоненты Checked меняется соответственно и возникает событие OnClick. Описательный текст хранится в свойстве Caption. Затемнить бокс (подкрасить серым цветом) можно установкой значения true свойства AllowGrayed. Свойство State отражает текущее состояние и цвет бокса.
Программа «Сопротивление» вычисляет сопротивление электрической цепи, состоящей из двух резисторов, которые могут быть соединены последовательно или параллельно. Демонстрирует использование компонента RadioButton. Форма программы приведена на рисунке 2.1.
RadioGroup1
Label1
Label4
RadioButton1
RadioButton2
Button1
Edit1
Рисунок 2.1 – Форма программы «Сопротивление»
Листинг программы
/* Программа вычисляет сопротивление электрической цепи, которая состоит из двух сопротивлений. Сопротивления могут быть соединены последовательно или параллельно.*/
// щелчок на кнопке Вычислить
void __fastcall TForm1::Button1Click(TObject *Sender)
{ float r1,r2,r;
r1 = StrToFloat(Edit1->Text);
r2 = StrToFloat(Edit2->Text);
/* Переключатели RadioButton1 и RadioButton2 зависимые, поэтому о типе соединения можно судить по состоянию одного из них */
if ( RadioButton1->Checked )
{ // выбран переключатель "последовательно"
r = r1 + r2; } else
{ /* выбран переключатель "параллельно" при вычислении сопротивления возможно исключение EInvalidOp */
try
{ r = (r1 * r2) / (r1 + r2); }
catch ( EInvalidOp &e)
{ ShowMessage("Необходимо задать величину сопротивлений"); return; } }
Label4->Caption = FloatToStrF(r,ffGeneral,6,2) + " Ом"; }
// щелчок на переключателе "последовательно"
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{ Label4->Caption = ""; }
// щелчок на переключателе "параллельно"
void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{ Label4->Caption = ""; }
// нажатие клавиши в поле R1
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{ if ( ( Key >= '0') && ( Key <= '9' ) ) return; // цифра
if ((Key == ',') || (Key == '.'))
{ /* Чтобы не раздражать пользователя, заменим неправильный разделитель правильным. Глобальная переменная Decimalseparator содержит символ, используемый в качестве разделителя при записи дробных чисел. */
Key = DecimalSeparator;
if ( (Edit1->Text).Pos(DecimalSeparator) != 0 )
Key = 0; // разделитель уже введен
return; }
if (Key == VK_BACK) return;// клавиша <Backspace>
if ( Key == VK_RETURN) // клавиша <Enter>
{ Edit2->SetFocus(); return; }
// остальные символы запрещены
Key = 0; }
// нажатие клавиши в поле R2
void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{ if ( ( Key >= '0') && ( Key <= '9' ) ) // цифра
return;
if ((Key ==',') || (Key == '.'))
{ Key = DecimalSeparator;
if ( (Edit1->Text).Pos(DecimalSeparator) != 0 )
Key = 0; // разделитель уже введен
return; }
if (Key == VK_BACK) // клавиша <Backspace>
return;
if ( Key == VK_RETURN) // клавиша <Enter>
{ Button1->SetFocus(); return; }
// остальные символы запрещены
Key = 0; }
