Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2017-06-02 | 239 |
5.00
из
|
Заказать работу |
|
|
SelectNext(ToDestroy,false,true);
ToDestroy.Free;
ToDestroy:=nil;
end;
Caption:=Format('Кнопок %d',[TMyButton.GetCount]);
end;
End.
Вариант решения получим таким же, как на рис. 35. Однако в данном варианте, нажимая неоднократно на клавишу BackSpace, можно удалить все кнопки, построенные на форме.
Все переменные типа класс (например, ToDestroy) по сути являются указателями, поэтому для проверки, существует ли тот или иной объект, применяется функция Assigned (обработчик Timer1Timer) которая проверяет, равна ли переменная значению “пустой указатель” (т.е. nil) или нет.
ТИПЫ ССЫЛКИ НА КЛАСС
Такой программный элемент, как тип обычной переменной, представляющий собой правила обращения с теми или иными переменными, существует только во время компиляции программы. Эти правила не могут измениться во время выполнения программы. Типы ссылки на класс, которые синтаксически объявляются как Class of TmyClass позволяют нарушить указанные правила. С помощью этих типов можно обращаться к объектным типам во время выполнения программы. Для некоторого заданного типа объектный тип – это значение, которое можно записать в переменную типа ссылки на класс. Во время выполнения программы в разных её участках переменной данного типа можно присваивать в качестве значения различные объектные типы и, таким образом, строить нужные объекты, вызывая тот или иной виртуальный конструктор.
СВОЙСТВА
Свойства представляют интерфейс с внутренними полями данных того или иного объекта. Внутренние поля обычно объявляются в разделе Private. Их имена, как правило, начинаются с буквы F, например поле FColor. Соответственно свойство, с помощью которого осуществляется доступ к заданному полю FColor, имеет имя Color. Свойства могут объявляться с различной степенью доступа. Если требуется, чтобы они отображались в окне инспектора объектов, их объявляют в разделе Published.
|
Свойства могут создаваться с помощью различных типов данных, а именно:
1) Simple – простые свойства;
2) Enumerated – перечисляемые;
3) Set – множества;
4) Object – объектного типа;
5) Array – индексированные свойства.
Разные типы свойств по-разному отображаются в инспекторе объектов и имеют свои собственные редакторы для изменения значений свойств. Далее рассмотрим синтаксис записи различных видов свойств.
СВОЙСТВА SIMPLE
Простые свойства включают числовые, символьные и строковые типы данных. Наиболее часто используются свойства типа integer и string. Например, свойства Width, Height имеют тип integer, свойство Caption имеет тип string. Объявим для демонстрации синтаксиса записи простых свойств следующий класс:
Type
TSimple=class(TCustomControl)
Private
FString: string;
Published
Property StringProp:string
read FString write FString;
end;
Как следует из этого примера, свойства имеют тип поля, в котором хранится значение данного свойства. Кроме того, для свойства необходимо указывать способ чтения информации из соответствующего поля и способ записи данных в поле. Если отсутствует или способ чтения или способ записи данных, то соответствующее свойство имеет доступ или только по чтению или только по записи.
СВОЙСТВА ENUMERATED
Свойстваenumerated определяются типом перечень и логическим типом Boolean. Обычно все возможные значения данного типа свойств некоторым способом помечаются, например, как в объявлениях ниже:
Type
TEnumProp=(epZero, epOne, epTwo, epThree);
TEnum=class(TCustomControl)
Private
FEnumProp: TEnumProp;
Published
Property EnumProp: TEnumProp
read FEnumProp write FEnumProp;
end;
СВОЙСТВА SET
Элементы свойства Set (множество) в инспекторе объектов заключаются в квадратные скобки. Для развёртывания элементов базового множества, включающего в себя все возможные варианты, имеется знак + (плюс), расположенный слева от наименования свойства. Включить или не включить тот или иной элемент из базового множества в рабочее множество, выбирается путём указания true или false. Рабочее множество определяет значение данного свойства. Рассмотрим пример объявления свойства Set. При этом используется тип TEnumProp, объявленный выше.
|
Type
TSetProp=set of TEnumProp
TSetClass=class(TCustomControl)
Private
FSetProp:TSetProp;
Published
Property SetProp:TsetProp
read FSetProp write FSetProp;
End;
СВОЙСТВА OBJECT
Свойства Object в инспекторе объектов помечаются или знаком + или кнопкой с многоточием (×××). Например свойство Font имеет объектный тип. Для того, чтобы привести пример объявления свойства объектного типа, необходимо предварительно сформировать объект какого-либо класса и выбрать предка для этого класса. На практике в большинстве случаев в качестве предка выбирается встроенный класс TPersistent. Объявим класс, который будет определять далее в примере тип свойства.
Type
TObjectDop=class(TPersistent)
Private
FMyInt:integer;
Public
Property MyProp:integer read FMyInt write FMyInt;
End;
В данном случае нужно решить одну проблему. Объявленный выше класс (TObjectDop) должен войти как составная часть в класс, который должен будет содержать свойство заданного объектного типа TObjectDop. Соответственно потребуется задавать этому свойству значение, а это означает, что потребуется объект типа TObjectDop, для которого необходимо обеспечить выделение памяти и освобождение памяти. Стандартных методов выделения и освобождения памяти в данном случае недостаточно. Для выделения памяти создадим конструктор Create, а для высвобождентя памяти – деструктор Destroy.
Type
TObjectProp=class(TCustomControl)
Private
FObjectProp: TObjectDop;
Public
Constructor Create(AOwner:TComponent);override;
Destructor Destroy;override;
Published
|
|
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!