
Семинар 2 Ввод и вывод информации
Кнопка (класс TButton).
Компонент представляет собой прямоугольник, на котором размещается название кнопки. Используется для инициирования каких-либо действий.
Свойства:
Caption - название кнопки.
Default - определяет, генерируется ли событие OnClick для данной кнопки при нажатии клавиши Enter , т.е. можно ли пользоваться для «нажатия» кнопки клавиатурой ( да, если true). Используется для указания действий, осуществляемых при нажатии клавиши Enter.
Cancel - аналогично, но для клавиши Esc.
ModalResult - в процессе выполнения в это поле можно занести код возврата, который затем можно проанализировать для определения дальнейших действий.
Enabled активизировать true
Строчный редактор (класс tEdit).
Компонент представляет собой окно, обычно выделенное цветом, которое может использоваться, например, для организации ввода информации.
Свойства :
Text - строка, которая содержит введенную и отображаемую в окне компонента информацию. Доступ к информации в строке осуществляется как к полю записи, например: Edit1.Text .
MaxLength - максимальная длина вводимой строки (если равна 0, то длина не ограничена).
ReadOnly - определяет возможность ввода информации в окно компонента (если true, то ввод невозможен).
Visible видимость true
SetFocus установить курсор
Enabled
Clear очистить
Пример 1. Вычисление квадрата заданного числа.
Установка свойств в Инспекторе Объектов:
Form1:
Name:=MainForm;
Caption:='Возведение числа в квадрат';
Label1:
Name:='InputLabel';
Caption:='Введите значение';
Label2:
Name:=OutPutLabel;
Caption:='Квадрат введенного значения равен:';
Edit1:
Name:=InputEdit;
Edit2:
Name:=OutPutEdit;
Enable:=false;
ReadOnly:=true;
Button1:
Name:=NextButton;
Caption:='Следующее';
Button2:
Name:=ExitButton;
Caption:='Выход';
program Project1;
uses Forms, MainUnit in 'MainUnit.pas' {MainForm};{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end.
unit MainUnit;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TMainForm = class(TForm)
Bevel1: TBevel; {рамка}
NextButton, ExitButton: TButton;
InputLabel, OutPutLabel: TLabel;
InPutEdit, OutPutEdit: TEdit;
procedure FormActivate(Sender: TObject);
procedure InPutEditKeyPress(Sender: TObject; var Key: Char);
procedure NextButtonClick(Sender: TObject);
procedure ExitButtonClick(Sender: TObject);
end;
var MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.FormActivate(Sender: TObject);
begin
NextButton.Enabled:=false;
InPutEdit.ReadOnly:=false;
InPutEdit.Clear;
InPutEdit.Enabled:=true;
InPutEdit.SetFocus;
OutPutLabel.Visible:=false;
OutPutEdit.Visible:=false;
end;
procedure TMainForm.InPutEditKeyPress(Sender: TObject; var Key: Char);
var x:real;Code:integer;
begin
If Key=#13 then
begin
Key:=#0;
Val(InPutEdit.Text,x,Code);
if Code=0 then
begin
InputEdit.ReadOnly:=true;
InputEdit.Enabled:=false;
OutPutLabel.Visible:=true;
OutPutEdit.Visible:=true;
OutPutEdit.Text:=floattostr(sqr(x));
NextButton.Enabled:=true;
NextButton.SetFocus;
end
else
begin
MessageDlg('Введенное значение содержит недопустимые символы.', mtError, [mbOk], 0);
end
end
end;
procedure TMainForm.NextButtonClick(Sender: TObject);
begin FormActivate(NextButton);end;
procedure TMainForm.ExitButtonClick(Sender: TObject);
begin Close;end;
end.
Последовательность действий при создании программы проще всего показать на конкретном примере.
Задание. Разработать программу - калькулятор, выполняющий основные арифметические действия.
Создание программы начинается с задания имени проекта и первого модуля. При определении имени первого модуля следует сначала щелкнуть либо по первой форме (Form1), либо по странице (Unit1) текстового редактора, а затем определить новое имя через меню File\Save As... В появившемся окне создайте новую папку и введите имя модуля - C_unit.pas. Имя проекта определяется через меню File\Save Project As... (сохраните его в той же папке с именем Culc.dpr).
Измените заголовок формы Form1 на заголовок Калькулятор. Для этого, предварительно выделив щелчком форму, на странице Propeties инспектора объектов щелчком выделите свойство Caption (Заголовок) и введите имя Калькулятор.
Разместите на форме окно ввода чисел. Для этого на странице Standart палитры компонент найдите кнопку Edit. Мышью “перетащите” этот компонент в нужное место формы (см. Рис. 2). После этого измените размер компонента (тащите за черные квадратики в нужную сторону). Теперь удалите текст из окна компонента. Для этого на странице Propeties инспектора объектов выделите свойство Text и удалите информацию из этого поля.
Разместите кнопки операций на форме. Для этого на странице Standart палитры компонент найдите кнопку Button. Для того, чтобы не перетаскивать каждый компонент отдельно, перед выбором мышкой компонента нажмите клавишу Shift. Теперь щелкая мышью в нужных местах можно установить сразу все 7 кнопок. Для отмены работы с кнопкой щелкните мышью по стрелке под словом Standart палитры компонент. Затем, последовательно щелкая мышью по установленным кнопкам, измените заголовки кнопок (свойство Caption на странице Propeties инспектора объектов) соответственно на С, =, +, -, х, / и Quit (см. Рис.2).
Одновременно с построением формы Delphi строит новый класс с именем Tform1 (потомок класса стандартного класса Tform) и создает объект данного класса с именем Form1(на рисунке его не видно).
5. Теперь “научите” форму обрабатывать нажатия на кнопки. Для этого щелкните мышью по кнопке С и перейдите на страницу Events инспектора объектов. На этой странице приведены все события, на которые может реагировать компонент Button. Щелкнув по строке OnClick, выберете событие “щелчок мыши по компоненту”. Двойным щелчком по той же строке вызовете заготовку обработчика данного события:
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
Рис.2. Форма “Калькулятор” и фрагмент текста модуля.
Между begin и end необходимо ввести текст процедуры:
Edit1.Clear; { очистить окно компонента Edit1}
operation:='@'; { установить состояние “первая операция “}
Edit1.setfocus; { установить активным окно компонента Edit1}
Аналогично введите процедуры обработки нажатий на другие клавиши:
Для кнопки = (Button2):
procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin
operate; { выполнить предыдущую операцию}
str(sum:6:3,s); { преобразовать результат в строку}
Edit1.text:=s; { вывести строку в окно компонента Edit1}
Button1.setfocus; { установить курсор на кнопку Button1}
end;
Для кнопки + (Button3):
procedure TForm1.Button3Click(Sender: TObject);
begin
operate; { выполнить предыдущую операцию}
operation:='+'; { установить состояние “операция +“}
Edit1.setfocus; { установить активным окно компонента Edit1}
end;
Для кнопки - (Button4):
procedure TForm1.Button4Click(Sender: TObject);
begin
operate; { выполнить предыдущую операцию}
operation:='-'; { установить состояние “операция +“}
Edit1.setfocus; { установить активным окно компонента Edit1}
end;
Для кнопки * (Button5):
procedure TForm1.Button5Click(Sender: TObject);
begin
operate;
operation:='*';
Edit1.setfocus;
end;
Для кнопки / (Button6):
procedure TForm1.Button6Click(Sender: TObject);
begin
operate;
operation:='/';
Edit1.setfocus;
end;
Для кнопки Quit (Button7):
procedure TForm1.Button7Click(Sender: TObject);
begin
Close; { Завершение работы приложения}
end;
6. Теперь добавьте процедуру, которая непосредственно выполняет вычисления Operate:
procedure operate;
var s:string;
code:integer;
n:integer;
begin
s:=Form1.Edit1.text; { читаем сроку из параметра text Edit1}
Form1..clear; { очищаем Edit1}
val(s,n,code); { преобразуем строку в число}
case operation of { выполняем операцию}
'@': sum:=n;
'+': sum:=sum+n;
'-': sum:=sum-n;
'*': sum:=sum*n;
'/': sum:=sum/n;
end;
end;
7. Добавьте в модуль после служебного слова implementation объявление переменных:
var
Sum:real;
const
operation:char='@';
8. Сохраните полученный проект, используя меню File\SaveAll.
9. Выполните компиляцию проекта, используя либо Ctrl-F9, либо меню Project\Compile. Если при компиляции обнаружены ошибки, то внимательно проверьте текст программы.
10. Запустите программу на выполнение, используя либо F9, либо меню Run/Run, либо кнопку Run на панели быстрого доступа.
Примечание. Обратите внимание, что основные интерфейсные элементы, связанные с окном программы (такие как кнопки вызова системного меню, свертывания, развертывания, завершения программы и т.д.), при использовании среды Delphi программируются автоматически.