Структура модуля, содержащего объекты и процедуры

Рассмотрим текст кода модуля, обрабатывающего размещенные на форме два компонента: кнопку Buttonl типа TButton и метку Label1 типа TLabel. Кроме того, в модуле реализован обработчик события, связанного со щелчком мышью на кнопке, и в разных местах модуля добавлены переменные и функции, чтобы можно было видеть, как получить к ним доступ:

unit Unitl;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls:

type

TForml = class(TForm)

Label1: TLabel;

Buttonl: TButton;

procedure ButtonlClick(Sender: TObject);

private

procedure Fl(Ch:char); {Процедура Fl доступна только в

данном модуле}

public

{Переменная Ch1 и процедура F2 доступны для объектов любых классов и для других модулей, но со ссылкой на объект}

Ch1:char;

procedure F2(Ch:char);

end;

var

Forml: TForml;

{Переменная Ch2 и процедура F3 доступны для объектов любых классов и для других модулей}

Ch2:char;

procedure F3(Ch:char);

implementation

{$R *.DFM}

uses unit2;

{Переменная Ch3 и процедура F4 доступны только внутри данного модуля}

var

Ch3:char;

procedure F4(Ch:char):

begin

Forml.Label1.Caption:=Forml.Label1.Caption+Ch+Forml.Ch1;

end;

procedure TForml.Fl(Ch:char);

begin

Label1.Caption:=Label1.Caption+Ch+Chl;

end:

procedure TForml.F2(Ch:char);

begin

Label1.Caption:=Label1.Caption+Ch+Chl;

end;

procedure F3(Ch:char):

begin

Forml.Label1.Caption:=Forml.Label1.Caption+Ch+Forml.Ch1;

end;

procedure TForm1.ButtonlClick(Sender: TObject);

{Переменная Ch4 и процедура F5 доступны только внутри данной процедуры}

var

Ch4:char;

procedure F5(Ch:char);

begin

Label1.Caption :=Label1.Caption+Ch+Chl;

end;

begin

Ch1:='-';

Ch2:= 'A';

Ch3:='B';

Ch4:= 'C';

Label1.Caption := '';

F1(Chl);

F2(Ch2);

F3(Ch3);

F4(Ch4);

F5('D');

Label1.Font.Color:=clRed;

end;

end.

Структура программы является стандартной, но в текст внесены некоторые добавления. В описании класса можно видеть строки

Label1: TLabel;

Buttonl: TButton;

procedure Button1Click(Sender: TObject);

Первые две были вставлены редактором кода Delphi автоматически, как только разработчик приложения разместил на форме метку и кнопку. Эти строки означают, что в форме имеются объекты соответствующих типов. Третью из приведенных строк редактор кода Delphi добавил в тот момент, когда разра­ботчик приложения начал реализовывать обработку события OnClick — щел­чка на кнопке Button1.Одновременно с записью в описание класса объявле­ния процедуры Delphi занесла в раздел implementation заготовку соответству­ющей процедуры:

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

Здесь между резервированными словами beginи end;можно поместить текст обработчика события.

Помимо этой процедуры в коде присутствует еще несколько одинаковых про­цедур, Fl—F5, и несколько переменных символьного типа, Chi—Ch4. Рассмотрим работу процедур Fl—F5. У компонента — метки типа TLabel имеется свойство Caption — надпись на метке. Каждая из процедур Fl—F5 берет значение этой надписи, добавляет к ней символ, переданный в нее в качестве параметра Ch, затем добавляет символ, хранящийся в переменной Ch1, и возвращает надпись с этими добавлениями обратно в метку.

Обработчик щелчка мышью по кнопке — процедура TForm1.Button1Click — задает символьным переменным Ch1- Ch4 значения символов «-», А, В и С, за­тем очищает свойство Caption метки Label1, занося в него пустую строку, а за­тем поочередно обращается к процедурам Fl—F5, передавая в них в качестве параметров различные символы. В заключение надпись метки окрашивается в красный цвет. Для этого используется свойство Font — шрифт объекта Label1. Это свойство само является объектом, имеющим свойство Color — цвет. Зна­чение этого свойства изменяет последний оператор процедуры TForml.ButtonlClick.