Else ShowMessage( ' He заданы значения ');
Сохраните, откомпилируйте и запустите приложение на выполнение. Проверьте работу приложения для случая, когда не заданы значения операндов и убедитесь, что в этом случае выводится сообщение в отдельном окне. Попробуйте ввести в качестве значений операндов не цифры, а символы, например, «а» и «б». Щелкнув на кнопке Button1, убедитесь в том, что приложение завершается и выдает сообщение об ошибке, которая возникает из-за того, что приложение пытается преобразовывать символы в число.
Для предупреждения данной ошибки введем обработку события нажатия на клавишу в окне Edit1 и Edit2, чтобы запретить ввод любых символов, кроме цифр от 0 до 9 и знаков -, +.
Для создания процедуры обработчика события нажатия на клавишу в окне Edit1 выберите в окне Инспектора объектов компонент Edit1 и на странице События дважды щелкните левой кнопкой мыши на пустом поле списка в событии OnKeyPress. После этого окно Редактора кода немедленно получит фокус и в разделе interface появится запись процедуры обработчика события
procedure Edit1KeyPress(Sender: TObject: var Key:Char);
Параметр Key в обработчике этого события соответствует символу нажатой клавиши.
В разделе implementation появится текст заготовки этой процедуры:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key:Char);
begin
end;
Вставьте в тело процедуры следующий оператор:
if not (Key in ['О '..'9','+','-']) then Key:=#0;
Действие оператора сводится к сравнению значения переменной Key с множеством значений ['0'..'9','+','-']. Если символ нажатой клавиши не входит во множество, то Key присваивается значение нулевого символа (#0). Таким образом, в окне Edit1 будет отображаться текст, состоящий из цифр и знаков «+» и «-».
|
|
Аналогичным образом создайте процедуру обработчика события нажатия на клавишу в окне Edit2. В итоге получится следующий текст модуля приложения:
Unit Main;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms. Dialogs, StdCtrls, ExtCtris;
Type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
RadioGroup1: TRadioGroup;
Button1: TButton;
Edit3: TEdit;
Label3: TLabel;
procedure Button1ClickCSender: 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}
Procedure TForm1.Button1Click(Sender: TObject);
{обработчик события щелчка на кнопке Button1}
Var
a, b: integer; {2 операнда - целые числа.}
с: real; {результат арифметических операций}
Begin
if (Edit1.Text<>’’) and (Edit2.Text<>’’) then
Begin
a:=StrToInt(Edit1.text); {если значения заданы}
b:= StrToInt( Edit2. text); {преобразование текстовой строки
в целое число}
Edit3. text:=''; {очистить от результата предыдущих вычислений}
|
|
{выбор операции в зависимости от значения свойства RadioGroup1.ItemIndex}
Case RadioGroup1. ItemIndex of
0 : c:=a+b; {сложение}
1 : c:=a-b; {вычитание}
2 : c:=a*b; {умножение}
3 : {деление} if b=0 then ShowMessage(' Ha ноль делить нельзя!')
else c:=a/b;
End;
if RadioGroup1.ItemIndex <>3 than {вывод результата операций}
Edit3.text:=F1oatToStrF(c,ffGeneral,10,4)
{преобразование результата вещественного деления в текстовую строку}
else if b<>0 then
Edit3.text:=FloatToStrF(c,ffGeneral,10.4)
End
Else ShowMessage('He заданы значения ');
End;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin {разрешить ввод в Edit1 только цифр}
if not (Key in ['0'..'9','+','-']) then Key:=#0;
End;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin {разрешить ввод в Edit2 только цифр}
if not (Key in ['0'..'9','+','-']) then Key:=#0;
End;
End.
Сохраните, откомпилируйте и запустите приложение на выполнение. Попробуйте ввести в качестве значений операндов не цифры, а символы и убедитесь, что созданные выше обработчики событий. OnKeyPress для Edit1 и Edit2 не позволяют пользователю вести нецифровую информацию. Закройте окно приложения.
Дата добавления: 2020-11-15; просмотров: 100; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!