- Ты видел, козлина, чтобы я наш apple гадостью всякой поливал?
- Урод ты, дед. У нас четвертый пень уже год стоит вместо MAC`a.
- Да, внучек, я этот пентиум на мешок с маком и выменял.
Свойства в Delphi могут быть простыми, перечислимыми, типа множество, объектными и массивами.
Простые свойства - это числовые, символьные и строковые типы данных. В инспекторе объектов для них не нужны специальные редакторы свойств.
Перечислимые свойства - это стандартные перечислимые, логический и определенные пользователем перечислимые типы данных. В инспекторе объектов для них редакторы свойств отображаются в виде списка выбора (combobox).
Свойства типа множество - это стандандартные, а также определенные пользователем, множества. В инспекторе объектов для них редакторы свойств имеют знак [+] перед названием свойства.
Размер публикуемых (published) свойств ограничен 32 элементами. Если вам необходимо свойство с более чем 32 элементами - объявите свое свойство публичным (public).
Объектные свойства - это стандартные (TFont, TCanvas и т.п.) или определенные пользователем объекты, как правило наследники TPersistent. В инспекторе объектов для них редакторы свойств имеют знак [+] перед названием свойства и кнопку с тремя точками [...](пользовательский редактор свойства).
unit OurComponent;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs;
type
TOurComponent = class(TComponent)
private{ Private declarations }
FMyFont: TFont;
procedure SetMyFont(const Value: TFont);
protected{ Protected declarations }public{ Public declarations }constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published{ Published declarations }property MyFont: TFont read FMyFont write SetMyFont;
end;
procedureregister;
implementationprocedureregister;
begin
RegisterComponents('Samples', [TOurComponent]);
end;
{ TOurComponent }constructor TOurComponent.Create(AOwner: TComponent);
begininherited Create(AOwner);
{В отличие от предыдущих свойств, объекты обязательно
необходимо создавать в конструкторе компонента, как
правило после вызова унаследованного конструктора}
FMyFont.Create;
end;
destructor TOurComponent.Destroy;
begin
FMyFont.Free;
{В отличие от предыдущих свойств, объекты обязательно
необходимо разрушать в деструкторе компонента, как
правило перед вызовом унаследованного деструктора}inherited Destroy;
end;
procedure TOurComponent.SetMyFont(const Value: TFont);
begin{Объектному свойству значение присваивается с
помощью вызова метода Assign}
FMyFont.Assign(Value);
end;
end.
На заметку:
Перемещение между объявлением метода и реализацией происходит по нажатию клавиш Ctrl + Shift + стрелки вверх/вниз.
Свойства типа масив - обычные массива Object Pascal, но в отличии от последних могут индексироваться не только числовыми значениями но и строковыми. К сожалению этот тип свойства требует пользовательского редактора свойств (в инспекторе объектов редактор свойства имеет кнопку с тремя точками [...]), по-этому в указанном ниже примере свойство ArrayProp объявлено в секции public.
type
TOurComponent = class(TComponent)
private{ Private declarations }
FArrayProp: array[0..9] of integer;
function GetArrayProp(aIndex: integer): integer;
procedure SetArrayProp(aIndex: integer; const Value: integer);
protected{ Protected declarations }public{ Public declarations }property ArrayProp[aIndex: integer]: integer read GetArrayProp
write SetArrayProp;
published{ Published declarations }end;
Спецификаторы свойств
Спецификатор default указывает сохранять значение свойства в файле формы или нет. Если значение свойства совпадает со значением default - значение в файле формы не сохраняется, если значения не равны - сохраняется. Это можно проверить, положив компонент на форму и выбрать правой кнопкой мыши пункт меню "View as Text". Default не устанавливает первоначальное значение свойства к указанному. Это необходимо сделать в конструкторе компонента.
Спецификатор nodefault отменяет заданное по умолчанию значение свойства. Этот спецификатор, как правило, используется для отмены заданого по умолчанию значения унаследованного свойства. Например: property AutoSize nodefault; Спецификатор stored указывает когда сохранять в файле формы значение свойства. После stored может стоять true (всегда сохранять), false (никогда не сохранять) или название функции, которая возвращает логический результат.
Спецификатор index мы разберем в следующем выпуске, когда будем говорить о методах доступа к значению свойства. На заметку: Выделять прямоугольный фрагмент текста в редакторе исходного кода можно с помощью комбинации клавиш Alt + Shift + стрелки вверх/вниз.
Свойства в Delphi могут быть простыми, перечислимыми, типа множество, объектными и массивами.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.