Лабораторная работа: Знакомство с компонентами RadioGroup и CheckBox обработка строк типа String в среде Delphi
Задание 2. Отредактируйте текст модуля приложения 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;