Delphi-Help

Published

Печать
Рейтинг пользователей: / 0
ХудшийЛучший 

Published

Описание

type Class declaration
Published
Field | Property | Method declaration
{...}
end;

Директива Published начинает раздел объявлений определения класса. В разделе Published, Поля(Fields), Свойства(Properties) и Методы(Methods) объявлены как доступные для этого класса и классов, происходящих от этого, и код используют экземпляры класса. И информация об этих доступах зарегистрирована в рантайм информации для класса.

Поскольку public и published доступ обеспечивает связь видов с внешним кодом, Вы должны избегать везде, где возможно, создание изменений в этих разделах.

Пример кода

// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную Form1, которая имеет событие OnCreate названное FormCreate.

unit Unit1;

interface

uses
Forms, Dialogs, Classes, Controls, StdCtrls, SysUtils;

type
// Определение базового класса TSquare :
TSquare = class
private           // Известный только внутренне
squareArea, squareWidth, squareHeight : Integer;
Published // Известный внешне: также имеет информацию во время выполнения
property width  : Integer read squareWidth;
property height : Integer read squareHeight;
property area   : Integer read squareArea;
constructor Create(width, height : Integer);
end;

// Определение класса формы используемой этим модулем
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.dfm} // Вложение определений формы

// Создание объекта TSquare

constructor TSquare.Create(width, height: Integer);
begin
// Сохранение ширины и высоты
squareWidth  := width;
squareHeight := height;

// И вычисление и сохранение площади квадрата
squareArea := width * height;
end;

// Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
var
mySquare : TSquare;
begin
// Создание объекта square
mySquare := TSquare.Create(30, 40);

// Каковы атрибуты квадрата ? :
ShowMessageFmt('Площадь квадрата = %d * %d = %d',
[mySquare.width, mySquare.height, mySquare.area]);
end;

end.

Площадь квадрата = 30 * 40 = 1200

Примечание

Предупреждение: избегайте делания полей published - всегда лучше определить свойство, чтобы ним обращаться. Это обеспечивает некоторое разъединение от внутренней организации класса.

Только один Constructor может быть объявлен столь как published - overload версии должны быть определены как public.

Published свойства не могут возвращать массивы.

 

Авторизация



Счетчики