Учебная работа. Лабораторная работа: Знакомство с компонентами RadioGroup и CheckBox обработка строк типа String в среде Delphi

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Лабораторная работа: Знакомство с компонентами RadioGroup и CheckBox обработка строк типа String в среде Delphi

Задание 1.
(Калькулятор). Сделайте приложение, обеспечивающее ввод 2-ух целых чисел и выполнение над ними арифметических операций сложения, умножения и вещественного деления. Для выбора операций используйте переключатели, вывод сообщения о ошибке при вводе делителя, равного нулю, сделайте в отдельном окне сообщений.

Решение:

1. Сохраните проект в отдельной папке «Калькулятор». Проект назовите Calculator, а файл модуля – mainCalc.pas.

2. Задайте для характеристики Form1. Caption текст Edit1,2,3 в соответственных компонентах (используйте свойство Text). Разместите на форме компонент Button1. Клавишу назовите «Вычислить».

3. Разместите на форме компонент RadioGroup
1
из палитры Standard. Задайте для характеристики Caption Items
(это свойство задает количество переключателей в группе и надписи около их).
В окне


введите перечень частей – знаков арифметических операций в столбик: +, -, *, /. Щелкните мышкой по кнопочке ОК, окончите формирование перечня арифметических операций.

4. В окне Инспектора объектов задайте для характеристики RadioGroup
.
ItemIndex

Примечание:
найти во время выполнения, какая клавиша выбрана в данный момент, можно по индексу 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
(‘Не заданы значения’);

Решение (б):
Для реализации 2-ой части задания нужно сделать обработчики событий OnKeyPress
для компонент Edit1, Edit2.

Примечание:
параметр

в обработчике этого действия соответствует символу нажатой клавиши. При всем этом различаются знаки в верхнем и нижнем регистрах и знаки кириллицы латиницы. Клавиши, не имеющие соответственных им кодов 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 присваивается текст, состоящий из цифр и символов «+, -».

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;




private {Private declarations}

public {Public declarations}

end;

var

Form1: TForm1;

implementation

{$R *.dfm}


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;


begin

if not (Key in [‘0’..’9′, ‘+’, ‘-‘]) then Key:=#0;

end;


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
;

Примечание:
для поиска знака в строке используйте функцию

. Для программирования варианта подмены знаков используйте

компонента 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. Сохраните проект и запустите на выполнение.

]]>