Лабораторная работа: Знакомство с компонентами RadioGroup и CheckBox обработка строк типа String в среде Delphi
Название: Знакомство с компонентами RadioGroup и CheckBox обработка строк типа String в среде Delphi Раздел: Рефераты по информатике Тип: лабораторная работа |
Лабораторная работаНа тему: «Знакомство с компонентами RadioGroup и CheckBox, обработка строк типа String в среде Delphi»Задание 1. (Калькулятор). Создайте приложение, обеспечивающее ввод двух целых чисел и выполнение над ними арифметических операций сложения, умножения и вещественного деления. Для выбора операций используйте переключатели, вывод сообщения об ошибке при вводе делителя, равного нулю, выполните в отдельном окне сообщений. Решение: 1. Сохраните проект в отдельной папке «Калькулятор». Проект назовите Calculator, а файл модуля – mainCalc.pas. 2. Задайте для свойства Form1. Caption значение «Калькулятор». Разместите на форме компоненты (см. рис. 3.1) Edit1,2,3 и Label1,2,3. Задайте свойства Caption для компонентов Label – «операнд1», «операнд2», «Результат». Удалите текст Edit1,2,3 в соответствующих компонентах (используйте свойство Text). Разместите на форме компонент Button1. Кнопку назовите «Вычислить». 3. Разместите на форме компонент RadioGroup 1 из палитры Standard. Задайте для свойства Caption значение «Операция». Затем выберите свойство Items (это свойство задает количество переключателей в группе и надписи около них). В окне String List Editor введите список элементов – символов арифметических операций в столбик: +, -, *, /. Щелкните мышкой по кнопке ОК, завершите формирование списка арифметических операций. 4. В окне Инспектора объектов задайте для свойства RadioGroup . ItemIndex значение 0, чтобы сделать первую кнопку (сложение) выбранной по умолчанию. Задайте размер символов этого компонента, установив значение 14 пунктов. Примечание: определить во время выполнения, какая кнопка выбрана в данный момент, можно по индексу ItemIndex (0 означает первую кнопку, -1 – ни одна кнопка не выбрана). Форма будет иметь следующий вид: Рис. 3.1 Пример формы приложения «Калькулятор» 1. Создайте код обработки события щелчка на кнопке с надписью «Вычислить». Для решения задачи вычисления арифметических операций введите в текст процедуры TForm1. Button1Click следующее описание: Var a, b: integer; c: real; Так как в процедуре обработки нажатия кнопки должно быть 4 варианта реализации, по одному для каждой арифметической операции, то следует записать выбор вычисления с помощью оператора Case . В основном теле процедуры обработки события введите текст остальных операторов следующим образом: Begin A:=StrToInt (Edit1. Text); B:=StrToInt (Edit2. Text); Edit3. Text :=’ ‘; {очистить от результата предыдущих вычислений} Case RadioGroup1. ItemIndex of 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 (составной оператор) и сохраните проект Calculator 2, а модуль – mainCalc 2. Задание 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; 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} procedure TForm1. Button1Click (Sender: TObject); var a, b: integer; c: real; begin if (Edit1. Text<>'') and (Edit2. Text<>'') then begin a:=StrToInt (Edit1. Text); b:=StrToInt (Edit2. Text); Edit3. Text:=''; case RadioGroup1. ItemIndex of 0: c:=a+b; 1: c:=a-b; 2: c:=a*b; 3: if b=0 then ShowMessage ('Нанольделитьнельзя') else c:=a/b; end; if RadioGroup1. ItemIndex <> 3 then Edit3. Text:=FloatToStrF (c, ffGeneral, 10,4) else if b<>0 then Edit3. Text:=FloatToStrF (c, ffGeneral, 10,4); end elseShowMessage ('Не заданы значения'); end; procedure TForm1. Edit1KeyPress (Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', '+', '-']) then Key:=#0; end; procedure TForm1. Edit2KeyPress (Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', '+', '-']) then Key:=#0; end; end. Задание 3. Создайте приложение, предлагающее пользователю ввести строку, определяющее количество символов в ней и выводящее результат, согласуя окончание слова «символов» с числом символов. Решение: 1. Создайте папку «Количество символов» и сохраните в ней проект «simvol». 2. Разместите на форме компоненты: Edit1, Label1,2, Button1, как показано на рис. 3.2. Задайте значения свойств Label1. Caption – «Введите текст», Label2. Caption – «В тексте», Button1. Caption – «Вычислить». Удалите текст Edit1 из соответствующего компонента. Рис. 3.2 Пример формы проекта «Количество символов» 3. Для вычисления количества символов во введенной строке и вывода результата создайте процедуру обработчика события щелчка мышью на кнопке «Вычислить». 4. Введите в текст процедуры следующее описание переменных: Var N: integer; S: string; 5. Введите текст тела процедуры обработки события: Begin N := Length ( Edit 1. Text ); {определить число символов} Label 2. Caption := ‘В тексте’; If N >20 then N := N mod 10; {выделить последнюю цифру} Case N of 1: S:= ‘ символ ’; 2..4: S := ‘символа’; 0, 5..20: S := ‘символов’; End ; Label2. Caption:= Label2. Caption + IntToStr (Length(Edit1. Text )) + S ; End ; Примечание: функция Length – это функция обработки String переменных, определяет количество символов вводимой строки (см. раздел 1). 6. Сохраните проект и запустите программу на выполнение. Просмотрите результат программы, задавая текст с разным количеством символов и проверяя правильность вывода результатов работы. Задание 4. Создайте приложение, которое предлагает ввести текст, а затем заменить символы «а» на «б» в тексте и подсчитать количество замен. Решение: 1. Создайте папку «Замена символов» и сохраните в ней проект под названием «zamena», файл модуля сохраните как zmain.pas. 2. Форму приложения назовите «Подсчет и замена символов». На форме расположите три компонента Edit, три компонента Label, один компонент Button и два компонента CheckBox , как показано на рис. 3.3. 3. Задайте значения свойств: Label1. Caption – «Исходный текст на русском языке», Label2. Caption – «Измененный текст», Label3. Caption – «Число замен», Button1. Caption – «Выполнить», CheckBox1. Caption – «Подсчитать число замен», CheckBox2. Caption – «Заменить «а» на «б»». Удалите текст Edit1,2,3 из соответствующих компонентов. Рис. 3.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); {выводчислазамен} Edit 2. Text := S ; {вывод измененного текста} End ; 6. Сохраните проект и запустите на выполнение. |