КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Задание №1. Написать программу, которая позволяет пересчитать цену из долларов в рубли или из рублей в доллары
Постановка задачи:
Написать программу, которая позволяет пересчитать цену из долларов в рубли или из рублей в доллары. Рекомендуемый вид формы приведен на рис. 3.1. Во время работы программы, в результате выбора вида конвертации, соответствующим образом должен меняться заголовок окна и текст, поясняющий назначение полей ввода.
Оформить отчет в программе MS Word, которая включает в себя постановку задачи, программную реализацию, блок-схему и результат выполнения программы.
Рисунок 3.1
Программная реализация:
// щелчок на переключателе USD >> руб. procedure TForm1.RadioButton1Click(Sender: TObject); begin // изменить заголовок окна Form1.Caption := 'Конвертор: USD -> RUB'; // изменить текст перед полем Edit1 Label1.Caption := 'Сумма ($): '; // установить курсор в поле Сумма Edit1.SetFocus; Label3.Caption := ''; end; // щелчок на переключателе руб. >> USD procedure TForm1.RadioButton2Click(Sender: TObject); Примеры и задачи 27 begin Form1.Caption := 'Конвертор: RUB -> USD'; Label1.Caption := 'Сумма (руб.): '; Edit1.SetFocus; Label3.Caption := ''; end; // Щелчок на кнопке OK procedure TForm1.Button1Click(Sender: TObject); var usd: real; // цена в долларах rub: real; // цена в рублях k: real; // курс begin k := StrToFloat(Edit2.Text); if RadioButton1.Checked then begin // пересчет из долларов в рубли usd := StrToFloat(Edit1.Text); rub := usd * k; Label3.Caption := FloatToStrF(usd,ffFixed,6,2) + '$ = ' + FloatToStrF(rub,ffCurrency,6,2); end else begin // пересчет из рублей в доллары rub := StrToFloat(Edit1.Text); usd := rub / k; Label3.Caption := FloatToStrF(rub,ffCurrency,6,2) + ' = ' + FloatToStrF(usd,ffFixed,6,2) + '$'; end; end; // процедура обрабатывает событие EditChange // компонентов Edit1 и Edit2 28 Часть 1 procedure TForm1.EditChange(Sender: TObject); begin // если в каком-либо из полей Edit нет данных, // сделать кнопку Button1 недоступной if (Length (Edit1.Text) = 0) or (Length (Edit2.Text) = 0) then Button1.Enabled := False else Button1.Enabled := True; Label3.Caption := ''; end; // нажатие клавиши в поле Сумма procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin case Key of '0'..'9', #8: ; // цифры и <Backspace> '.',',': // Обработку десятичного разделителя // сделаем "интеллектуальной". Заменим точку // и запятую на символ // FormatSettings.DecimalSeparator — символ, // который при текущей настройке операционной // системы должен использоваться при записи // дробных чисел. begin Key := FormatSettings.DecimalSeparator; // проверим, введен ли уже в поле Edit // десятичный разделитель if pos(FormatSettings.DecimalSeparator,Edit1.Text) <> 0 then Key := #0; end; #13: // клавиша <Enter> Edit2.SetFocus // Переместить курсор // в поле Курс else Key := #0; // остальные символы запрещены end; end; Примеры и задачи 29 // нажатие клавиши в коле Курс procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin case Key of '0'..'9', #8: ; // цифры и <Backspace> '.',',': begin Key := FormatSettings.DecimalSeparator; if pos(FormatSettings.DecimalSeparator,Edit1.Text) <> 0 then Key := #0; end; #13: // клавиша <Enter> Edit2.SetFocus // Переместить фокус // на кнопку Ok else Key := #0; // остальные символы запрещены end; end;
|