Interfaceuses 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). 1. Измените заголовок формы Form1 на заголовок Калькулятор. Для этого, предварительно выделив щелчком форму, на странице Propeties инспектора объектов щелчком выделите свойство Caption (Заголовок) и введите имя Калькулятор. 2. Разместите на форме окно ввода чисел. Для этого на странице Standart палитры компонент найдите кнопку Edit. Мышью “перетащите” этот компонент в нужное место формы (см. Рис. 2). После этого измените размер компонента (тащите за черные квадратики в нужную сторону). Теперь удалите текст из окна компонента. Для этого на странице Propeties инспектора объектов выделите свойство Text и удалите информацию из этого поля. 3. Разместите кнопки операций на форме. Для этого на странице 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
|