Начинается изданный, внешне доступный раздел класса
unit
type Class declaration Published Field | Property | Method declaration {...} end;
Описание
Директива Published начинает раздел объявлений определения класса. В разделе Published, Поля(Fields), Свойства(Properties) и Методы(Methods) объявлены как доступные для этого класса и классов, происходящих от этого, и код используют экземпляры класса. И информация об этих доступах зарегистрирована в рантайм информации для класса.
Поскольку public и published доступ обеспечивает связь видов с внешним кодом, Вы должны избегать везде, где возможно, создание изменений в этих разделах.
Примечания
Предупреждение: избегайте делания полей published - всегда лучше определить свойство, чтобы ним обращаться. Это обеспечивает некоторое разъединение от внутренней организации класса.
Только один Constructor может быть объявлен столь как published - overload версии должны быть определены как public.
Published свойства не могут возвращать массивы.
Похожие команды
Function Определяет подпрограмму, которая возвращает значение
Private Начинает частный (Private) раздел данных и методов в классе
Procedure Определяет подпрограмму, которая не возвращает значение
Property Определяет управляемый доступ к полям класса
Protected Начинает раздел класса частных данных доступных подклассам
Type Определяет новую категорию переменной или процесса
Пример кода : Простой пример
// Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем 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.