Методы получения (чтения) и установки (записи) значений свойств подчиняются определенным правилам.
Метод чтения свойства — это всегда функция, возвращающая значение того же типа, что и тип свойства. Метод записи свойства — это обязательно процедура, принимающая параметр того же типа, что и тип свойства. В остальных отношениях это обычные методы объекта.
Пример:
Type TFigure = class FVisible: Boolean; ... procedure SetVisible (const AVisible: Boolean); ... property Visible: Boolean read FVisible write SetVisible; end; |
Использование методов для получения и установки свойств позволяет проверить корректность значения свойства, сделать дополнительные вычисления, установить значения зависимых полей и т.д. Например, в методе SetVisible вполне целесообразно осуществить проверку состояния объекта (видим или невидим), чтобы избежать его повторного рисования или удаления с экрана:
procedure TFigure.SetVisible (const AVisible: Boolean);begin if Visible <> AVisible then // Если состояние изменяется begin if AVisible then Draw; // Нарисовать else Hide; // Убрать с экрана FVisible := AVisible; // Сохранение состояния в поле end;end; |
Значение свойства может не храниться, а вычисляться при каждом обращении к свойству.
Пример:
TEllipse = class(TFigure) // эллипсPrivateFFocus:TCoordinates; function GetFocus2: TCoordinates; procedure SetFocus(const Value: TCoordinates); PublicProperty Focus1:TCoordinates read FFocus write SetFocus;Property Focus2:TCoordinates read GetFocus2; end; |