Описание |
Директива Published начинает раздел объявлений определения класса. В разделе Published, Поля(Fields), Свойства(Properties) и Методы(Methods) объявлены как доступные для этого класса и классов, происходящих от этого, и код используют экземпляры класса. И информация об этих доступах зарегистрирована в рантайм информации для класса.
Поскольку public и published доступ обеспечивает связь видов с внешним кодом, Вы должны избегать везде, где возможно, создание изменений в этих разделах.
|
|
Примечания |
Предупреждение: избегайте делания полей published - всегда лучше определить свойство, чтобы ним обращаться. Это обеспечивает некоторое разъединение от внутренней организации класса.
Только один Constructor может быть объявлен столь как published - overload версии должны быть определены как public.
Published свойства не могут возвращать массивы.
|
|
Похожие команды |
Function Определяет подпрограмму, которая возвращает значение
Private Начинает частный (Private) раздел данных и методов в классе
Procedure Определяет подпрограмму, которая не возвращает значение
Property Определяет управляемый доступ к полям класса
Protected Начинает раздел класса частных данных доступных подклассам
Public Начинает внешне доступный раздел класса
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.
|
Площадь квадрата = 30 * 40 = 1200
|
|