Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  


Основы Delphi
Published
Деректива
Начинается изданный, внешне доступный раздел класса 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  Начинает раздел класса частных данных доступных подклассам

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
 



© Форум Delphi   |  Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки   |  Английская версия