Студопедия — Базовые классы VCL. Характеристика. Примеры.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Базовые классы VCL. Характеристика. Примеры.






В основе иерархии объектов библиотеки VCL лежит класс TObject. Он обеспечивает выполнение важнейших функций “жизнедеятельности” любого объекта. Благодаря ему каждый класс получает в наследство механизмы создания экземпляра объекта и его уничтожения.

Обычно разработчик не задумывается о том, как объект будет создан, и что необходимо сделать для его корректного уничтожения. Компоненты VCL создаются и освобождают занимаемые ресурсы автоматически. Иногда разработчику приходится создавать и удалять объекты самостоятельно. Но даже в этом случае ему достаточно вызвать соответствующие конструктор и деструктор:

 

Var SomeList: TStrings;

..

SomeList:= TStrings.Create;

...

SomeList.Free;

 

За кажущейся простотой этих операций скрывается довольно сложная реализация указанных процессов. Практически весь исходный код класса TОbject написан на ассемблере для обеспечения наибольшей эффективности операций, которые будут выполняться в каждом его потомке. Кроме того, класс TОbject обеспечивает создание и хранение информации об экземпляре объекта и обслуживание очереди сообщений.

Класс TРersistent происходит непосредственно от класса TОbject. Он обеспечивает своих потомков возможностью взаимодействовать с другими объектами и процессами на уровне данных. Его методы позволяют передавать данные в потоки, а также обеспечивают взаимодействие объекта с инспектором объектов.

Класс TСomponent служит основой для всех компонентов Delphi. Этот класс задает базовое поведение всех компонентов – их основные свойства и методы. К ним относятся:

возможность отображения компонента в палитре компонентов и управления им в дизайнере форм;

возможность выступать контейнером для других компонентов;

возможность выступать в качестве оболочки вокруг компонентов ActiveX и других объектов, реализующих интерфейсы.

Класс TСomponent является базовым для создания невизуальных компонентов, которые могут располагаться в палитре компонентов и использоваться в дизайнере форм.

Для создания визуальных компонентов базовым является TСontrol, а для создания компонентов, имеющих окна, – класс TWinControl. Визуальные компоненты являются элементами управления. Элементы управления – это варианты стандартных элементов управления Windows. Примером элемента управления является “кнопка”. Пользователь может произвести некоторое действие, выполнив щелчок на этой кнопке. Компонент “Меню” видим и доступен для редактирования только разработчику приложения. Для него этот компонент является инструментом, используемым для создания меню. Во время работы программы пользователь видит только результат работы “Меню”, а не сам элемент.

В дальнейшем изложении эти два понятия компонент и элемент управления являются синонимами. Все элементы управления являются компонентами, но не все компоненты – элементы управления.

Общие предки обуславливают общие свойства компонентов. Рассмотрим только те, которые имеют самое широкое распространение.

Класс TОbject реализует функции, которые обязательно будет выполнять любой объект, который может быть создан в среде разработки. В первую очередь это создание и уничтожение экземпляра объекта.

Процесс создания объекта включает выделение области адресного пространства, установку указателя на экземпляр объекта, задание начальных значений свойств и выполнение установочных действий, связанных с назначением объекта. Объявление конструктора выглядит следующим образом:

 

Constructor Create;

 

Для уничтожения экземпляра объекта в TObject предназначены методы Destroy и Free:

 

Destructor Destroy; Virtual;

Procedure Free

 

Destroy обеспечивает освобождение всех занимаемых экземпляром объекта ресурсов. При уничтожении объектов рекомендуется вместо деструктора вызывать метод Free, который просто вызывает деструктор, но перед этим проверяет, чтобы указатель на экземпляр объекта был не пустым (не был равен Nil). Это позволяет избежать серьезных ошибок.

Если объект является владельцем других объектов (например, форма владеет всеми размещенными на ней компонентами), то его метод Free автоматически вызовет эти же методы для всех объектов. Поэтому при закрытии формы разработчик избавлен от необходимости заботиться об уничтожении всех компонентов.

Каждый объект должен содержать некоторую информацию о себе, которая используется приложением и средой разработки. Поэтому класс TObject содержит ряд методов, обеспечивающих представление этой информации в потомках.

Функция ClassName: ShortString; возвращает имя объекта, которое может быть использовано для идентификации. Например, один метод-обработчик щелчка на кнопке может работать с несколькими типами компонентов кнопок:

 

Procedure TForm1.Button1Click(Sender: TObject);

Begin

If Sender.ClassName = ‘TButton’ Then (Sender AS TButton).Enabled:= False;

If Sender.ClassName = ‘TSpeedButton’ Then

(Sender AS TSpeedButton).Down:= True;

End;

 

Метод ClassNamesIs (const Name: string): Boolean; позволяет определить, принадлежит ли данный объект тому типу, имя которого передано в параметре Name. В случае положительного ответа функция возвращает True.

 

Класс TРersistent предназначен для организации взаимодействия своих потомков с другими объектами и потомками.

Метод Assign (Source: TPersistent); осуществляет копирование содержимого одного объекта в другой. При этом объект-получатель остается самим собой, чего нельзя достигнуть, используя простое присваивание переменных объектного типа:

 

FirstObject:= SecondObject;

 

В этом случае указатель на одну область адресного пространства, содержащую объект, замещается указателем на другую область адресного пространства, содержащую другой объект. Метод Assign позволяет сохранить сами объекты неизменными, заменяя только значения их свойств.

Класс TРersistent не используется напрямую, от него порождаются потомки, которые должны уметь передавать другим объектам значения своих свойств.

 

Класс TСomponent является предком всех компонентов VCL. Он используется в качестве основы для создания невизуальных компонентов и реализует основные механизмы, которые обеспечивают функционирование любого компонента. В нем появляются первые свойства, которые отображаются в инспекторе объектов.

Свойство Name определяет имя компонента. Имя компонента строится по тем же правилам, что и имена любых других объектов программирования – констант, переменных подпрограмм и т.д. Так как компоненты помещаются на форму средой Delphi, каждый компонент автоматически получает создаваемое средой имя, совпадающее с именем своего класса (без начальной буквы Т) и дополненное числовым суффиксом: Form1, Button2, Edit4 и т.д. Впоследствии программист может переименовать компонент, чтобы сделать текст программы более “читабельным”.

Свойство Tag типа Longint определяет произвольный целочисленный параметр, который не используется Delphi и которым программист может распоряжаться по своему усмотрению.

Свойство Сomponents содержит список всех компонентов, владельцем которых является данный компонент. Свойство Components удобно использовать в том случае, когда необходимо обратиться к компонентам, которыми владеет данный компонент, используя их порядковые имена, а не по имени.

Свойство Owner – указывает на владельца компонента.

Свойство ComponentCount – определяет количество компонентов, владельцем которых является данный компонент.

Свойство ComponentIndex – содержит индекс данного компонента в списке Components его владельца.

 







Дата добавления: 2015-08-12; просмотров: 894. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Тема 5. Организационная структура управления гостиницей 1. Виды организационно – управленческих структур. 2. Организационно – управленческая структура современного ТГК...

Методы прогнозирования национальной экономики, их особенности, классификация В настоящее время по оценке специалистов насчитывается свыше 150 различных методов прогнозирования, но на практике, в качестве основных используется около 20 методов...

Методы анализа финансово-хозяйственной деятельности предприятия   Содержанием анализа финансово-хозяйственной деятельности предприятия является глубокое и всестороннее изучение экономической информации о функционировании анализируемого субъекта хозяйствования с целью принятия оптимальных управленческих...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия