- •Информатика
- •Программирование в среде Delphi
- •Лабораторная работа № 2
- •Создание программы вычисления площади треугольника.
- •Обобщенная схема процесса обработки информации.
- •Вид проекта.
- •Структура главной формы.
- •Свойства формы и некоторые особенности ее поведения.
- •Свойства и особенности «работы» строк ввода/редактирования.
- •Свойства и функциональные характеристики командных кнопок.
- •Создание формы, вставка «пассивных» компонент и элементов управления.
- •Создание программ обработки событий и решения задачи.
- •Начнем с создания обработчика события «Открытие формы» – «OnCreate».
- •Создание программы для решения основной задачи (обработчика события OnClick кнопки «Вычислить» («But_exe»)).
- •Обеспечение перехода к расчетам по новому участку.
- •Обеспечение работы кнопки «Завершить».
-
Создание программ обработки событий и решения задачи.
В соответствии с нашим проектом мы должны обеспечить функционирование формы и элементов активного управления (кнопок).
-
Добавим в программу глобальные переменные a, b, c, P, S. Для этого откройте окно текстового редактора с модулем формы «Formgl1», найдите раздел Var и вставьте определения указанных переменных. Текст модуля будем иметь следующий вид. Вставленные элементы выделены другим шрифтом.
unit Formgl1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, AxCtrls, vcf1, OleCtrls, vcfi, ExtCtrls;
type
TForm1 = class(TForm)
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
But_exe: TButton;
But_New: TButton;
But_Exit: TButton;
Bevel1: TBevel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a,b,c : integer;
P,S : Real;
implementation
{$R *.DFM}
end.
Далее, нам надо создать обработчики событий, т. е. добавить в соответствующие процедуры необходимые фрагменты программ.
Для ввода текста фрагмента программы необходимо выделить объект (компоненту) и перейти в инспекторе объектов на вкладку «Events». Нужный объект можно выбрать и из списка объектов – в верхней части инспектора.
Далее – в списке событий необходимо найти нужное событие, выделить его, перейти в окошко ввода (с кнопкой открытия) и щелкнуть 2ЛКМ. Откроется окно редактора в том месте, куда автоматически будет помещена заготовка процедуры обработки события (автоматически заголовок этой процедуры будет вставлен в раздел описания процедур формы).
Аналогичные действия необходимо проделать, если Вы хотите откорректировать какую-либо процедуру обработки события.
-
Начнем с создания обработчика события «Открытие формы» – «OnCreate».
Щелкните на пустом месте формы, на вкладке Events найдите нужное событие, перейдите в редактор и вставьте в заготовку обработчика событий (процедуру) необходимый текст программы (см. ниже, где «вставка» выделена другим шрифтом):
procedure TForm1.FormCreate(Sender: TObject);
begin
a:= 0; b:= 0; c:= 0;
P:= 0; S:= 0;
Edit1.Text := 'Ввести А';
Edit2.Text := 'Ввести В';
Edit3.Text := 'Ввести С';
end;
-
«Закрытие формы» – событие «OnCloseQuery». Мы используем обработчик этого события для того, чтобы «перехватить» управление по выполнению операции закрытия, которое инициируется различными элементами управления (см. стр. 5). Этот «перехват» необходимо сделать для того, чтобы вставить сообщение – запрос, с помощью которого пользователь может выбрать один из двух вариантов: либо окончательно закрыть форму и завершить решение задачи, либо вернуться в форму и продолжить работу.
Откройте заготовку обработчика события. В процедуре FormCloseQuery (Sender: TObject; var CanClose: Boolean); используется переменная CanClose логического (булевского) типа. Этой переменной надо присвоить значение True, если форму надо закрыть и значение False – иначе. Данная переменная глобальная и объявлена в одном из присоединенных (в Uses) модулей.
Для формирования сообщения – воспользуемся текстовой константой: stext. Для вывода запроса – используем стандартную функцию «MessageDlg (stext, mtConfirmation, [mbYes,mbNo],0)». Описание функции здесь не приводится (пользуйтесь лекциями и дополнительной литературой).
Текст процедуры должен выглядеть следующим образом:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
const
stext = 'Завершить работу программы?';
begin
Case MessageDlg (stext,mtConfirmation,[mbYes,mbNo],0) Of
idYes: CanClose := True;
idNo: Begin CanClose := False; Edit1.SetFocus; end;
End;
end;
После формирования процедуры – запустите программу, исправьте синтаксические ошибки, если они появились и проверьте работоспособность обработчика событий (используйте для закрытия формы – оконную кнопку)