0: c:= a + b;
1: c:= a - b;
2: c:= a * b;
3: if b=0 then ShowMessage (‘На ноль делить нельзя!’)
Else c:= a / b;
End;
If RadioGroup.ItemIndex <> 3 then Edit3.Text:= FloatToStrF(c, ffGeneral, 10, 4)
Else if b <> 0 then Edit3.Text:= FloatToStrF(c, ffGeneral, 10, 4);
End;
6. Сохраните и запустите приложение на выполнение.
7*. Самостоятельно исправьте код программы модуля, используя другой вариант оператора Case (составной оператор) и сохраните проект Calculator2, а модуль – mainCalc2.
8. Отредактируйте текст модуля приложения Calculator таким образом, чтобы перед выполнением вычислений выполнялась проверка: а) заданы ли значения операндов, если значения операндов не заданы, то следует вывести сообщения об этом в отдельном окне; б) запретить ввод любых символов, кроме цифр от 0 до 9 и знаков «-», «+».
Решение (а):
Поместите перед оператором присваивания A:=StrToInt(Edit1.Text); строку:
If (Edit1.Text <> ‘’) and (Edit2.Text <> ‘’) then begin
которая проверяет значения свойств Edit1.text и Edit2.text. Если эти значения не пусты, то выполняется вычисление арифметической операции, в противном случае управление передается на следующий фрагмент программы, который нужно вставить перед последним оператором end;
Else ShowMessage (‘Не заданы значения’);
Решение (б): Для реализации второй части задания необходимо создать обработчики событий OnKeyPress для компонентов Edit1, Edit2.
Примечание: параметр Key в обработчике этого события соответствует символу нажатой клавиши. При этом различаются символы в верхнем и нижнем регистрах и символы кириллицы латиницы. Клавиши, не имеющие соответствующих им кодов ASCII (Shift, Alt, Ctrl и функциональные клавиши), не вызывают этого события. Поэтому нажатие таких комбинаций клавиш, как, например, Shift+A, генерирует только одно событие OnKeyPress, при котором параметр Key равен «А». Для того чтобы распознавать подобные комбинации клавиш, следует использовать обработчики событий OnKeyDown, OnKeyUp.
|
1. Выделите на форме объект Edit1 и выберите в окне Инспектора объектов на странице Events (События) событие OnKeyPress. Дважды щелкните левой кнопкой мыши на пустом поле списка этого события. После этого курсор переместиться в окно Редактора кода и в разделе interface появится запись процедуры обработчика события:
Procedure Edit1KeyPress (Sender: TObject; var Key: Char);
2. Вставьте в тело процедуры следующий оператор:
If not (Key in [‘0’..’9’, ‘+’, ‘-‘]) then Key:= #0;
Действие оператора сводится к сравнению значения переменной Key с множеством значений от 0 до 9 и символов «+» и «-». Если символ нажатой клавиши не входит во множество, то Key присваивается значение нулевого символа (#0). Таким образом, в окне Edit1 будет отображаться текст, состоящий из цифр и знаков «+, -».
3. Аналогичным образом создайте процедуру обработки события компонента Edit2.
4. Сохраните приложение и запустите его на выполнение. Проверьте результат работы программы.
Текст модуля приложения имеет следующий вид:
unit mainCalc;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Edit3: TEdit;
Label3: TLabel;
RadioGroup1: TRadioGroup;
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
private { Private declarations }
public { Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Задача 4
Создайте приложение, которое предлагает ввести текст, а затем заменить символы «а» на «б» в тексте и подсчитать количество замен.
|
Решение:
1. Создайте папку «Замена символов» и сохраните в ней проект под названием «zamena», файл модуля сохраните как zmain.pas.
2. Форму приложения назовите «Подсчет и замена символов». На форме расположите три компонента Edit, три компонента Label, один компонент Button и два компонента CheckBox.
3. Задайте значения свойств: Label1.Caption – «Исходный текст на русском языке», Label2.Caption – «Измененный текст», Label3.Caption – «Число замен», Button1.Caption – «Выполнить», CheckBox1.Caption – «Подсчитать число замен», CheckBox2.Caption – «Заменить «а» на «б»». Удалите текст Edit1,2,3 из соответствующих компонентов.
4. Для замены и подсчета символов запишите процедуру обработки события OnClick для кнопки «Выполнить». Введите следующее описание переменных:
Var
S: string;
N: byte;
Примечание: для поиска символа в строке используйте функцию Pos. Для программирования варианта замены символов используйте значение свойства Checked компонента CheckBox.
5. Тело процедуры может быть записано следующим образом:
Begin
N:= 0;
Edit3.Text:= ‘’;
Edit2.Text:= ‘’;
S:= Edit1.Text;
If CheckBox2.Checked then {если включен флажок}
While Pos(‘a’, S) > 0 do {если в строке найдена буква «а»}
Begin
N:= N + 1;
S [ Pos (‘a’, S)]:= ‘б’; {заменить букву «а» на букву «б»}
End;
If CheckBox1.Checked then Edit3.Text:= IntToStr(N);
{вывод числа замен}
Edit2.Text:= S; {вывод измененного текста}
End;
6. Сохраните проект и запустите на выполнение.
7. Добавьте еще один пункт «Заменить пробелы на тире» и найдите количество таких замен.
Задача 5
Создать простейший текстовый процессор, содержащий переключатели цвета шрифта, флажки для определения стиля.
|
Содержание отчета:
1) Задание на выполнение лабораторной работы;
2) Блок-схема алгоритма программы “Калькулятор»;
3) Листинг программы.
Контрольные вопросы
1. Опишите назначение компонента RadioGroup?
2. Как задать список элементов-переключателей в панели RadioGroup?
3. По какому свойству RadioGroup определяется выбранный переключатель?
4. Как задать этому свойству значение?
5. Опишите назначение компонента CheckBox?
6. Какое свойство этого компонента позволяет определить выбор?