Главная:
Рефераты
Главная
Финансы деньги и налоги
Философия
Физика и энергетика
Управление
Схемотехника
Стратегический менеджмент
Статистика
Соцобеспечение
Семейное право
Программирование компьютеры и кибернетика
Охрана окружающей среды экология
Основы права
Медицина
Криминалистика и криминология
Коммуникации и связь
Кибернетика
Качество упр-е качеством
КСЕ
Информатика ВТ телекоммуникации
Журналистика
Государство и право
Биографии
Банковское дело
Карта сайта
Рефераты. Знакомство с компонентами 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
.
It
emIndex
значение 0, чтобы сделать первую кнопку (сложение) выбранной по умолчанию. Задайте размер символов этого компонента, установив значение 14 пунктов.
Примечание:
определить во время выполнения, какая кнопка выбрана в данный момент, можно по индексу
ItemIndex
(0 означает первую кнопку, -1 - ни одна кнопка не выбрана).
Форма будет иметь следующий вид:
Рис. 3.1 Пример формы приложения «Калькулятор»
1. Создайте код обработки события щелчка на кнопке с надписью «Вычислить». Для решения задачи вычисления арифметических операций введите в текст процедуры TForm1. Button1Click следующее описание:
Var
a, b
:
integer
;
c
:
real
;
Так как в процедуре обработки нажатия кнопки должно быть 4 варианта реализации, по одному для каждой арифметической операции, то следует записать выбор вычисления с помощью оператора
Case
.
В основном теле процедуры обработки события введите текст остальных операторов следующим образом:
Begin
A:=StrToIn
t
(Edit1.
Te
xt)
;
B:=StrToIn
t
(Edit2.
Te
xt)
;
Edit3
. Te
xt
:=' `
;
{очистить от результата предыдущих вычислений}
Case RadioGroup1
.
It
emIndex
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
.
It
emIndex <> 3
then
Edit3
.
Te
xt:= FloatToStr
F
(c,
ffGeneral, 10, 4)
Else
if
b <> 0
then
Edit3
.
Te
xt:= FloatToStr
F
(c,
ffGeneral, 10, 4)
;
End
;
6. Сохраните и запустите приложение на выполнение.
7*.
Самостоятельно исправьте код программы модуля, используя другой вариант оператора Case (составной оператор) и сохраните проект
Calculator
2,
а модуль -
mainCalc
2.
Задание 2.
Отредактируйте текст модуля приложения Calculator таким образом, чтобы перед выполнением вычислений выполнялась проверка: а) заданы ли значения операндов, если значения операндов не заданы, то следует вывести сообщения об этом в отдельном окне; б) запретить ввод любых символов, кроме цифр от 0 до 9 и знаков «-», «+».
Решение (а):
Поместите перед оператором присваивания A:=StrToInt (Edit1. Text); строку:
If
(Edit1
.
Te
xt <> `')
and
(Edit2
.
Te
xt
<> `')
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 Button1Clic
k
(Sender:
TObject);
procedure Edit1KeyPres
s
(Sender:
TObject; var Key: Char);
procedure Edit2KeyPres
s
(Sender:
TObject; var Key: Char);
private {Private declarations}
public {Public declarations}
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1
.
Bu
tton1Clic
k
(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
else ShowMessage ('Не заданы значения');
end;
procedure TForm1
.
Ed
it1KeyPres
s
(Sender:
TObject; var Key: Char);
begin
if not (Key in ['0'..'9', '+', '-']) then Key:=#0;
end;
procedure TForm1
.
Ed
it2KeyPres
s
(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
:=
Lengt
h
(
Edit
1.
Te
xt
)
;
{определить число символов}
Label
2
.
Ca
ption
:=
`
В текст
е';
If
N
>20
then
N
:=
N
mod
10
;
{выделить последнюю цифру}
Case
N
of
1
:
S
:
= `
символ
'
;
2..4
:
S
:
= `символа'
;
0, 5..20
:
S
:
= `символов'
;
End
;
Label2
.
Ca
ption
:
= Label2
.
Ca
ption + IntToSt
r
(Length(
Edit1
.
Te
xt
)) +
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
.
Te
xt
:
= `'
;
Edit2
.
Te
xt
:
= `'
;
S
:
= Edit1
.
Te
xt
;
If
CheckBox2
.
Ch
ecked
then
{если включен флажок}
While
Po
s
(`
a
'
,
S
) > 0
do
{если в строке найдена буква «а»}
Begin
N
:
=
N
+ 1
;
S
[
Pos
(`
a
'
,
S
)]
:
= `б'
;
{заменить букву «а» на букву «б»}
End
;
If
CheckBox1
.
Ch
ecked
then
Edit3
.
Te
xt
:
= IntToStr(N)
;
{вывод числа замен}
Edit
2
.
Te
xt
:
=
S
;
{вывод измененного текста}
End
;
6. Сохраните проект и запустите на выполнение.
Апрель (48)
Март (20)
Февраль (988)
Январь (720)
Январь (21)
2012 © Все права защищены
При использовании материалов активная
ссылка на источник
обязательна.