- •ЛР 1. Операторы и выражения Delphi
- •Оператор присваивания
- •Арифметические операторы
- •Оператор конкатенации строк
- •Логические операторы
- •Операторы поразрядного сдвига
- •Операторы отношения
- •Операторы множеств
- •Составной оператор begin..end
- •Условный оператор if..then..else
- •Оператор-селектор case
- •Оператор перехода goto
- •Оператор with..do
- •Организация циклов
- •Цикл с параметром for..do
- •Инструкция in в цикле for..do
- •Цикл с предусловием while..do
- •Цикл с постусловием repeat..until
- •Вложенные циклы
- •Операторы break и continue
- •ЗАДАНИЕ
- •Вариант 1.
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •ЛР 2. Структурные типы
- •Множества
- •Записи
- •Вариантные поля
- •Усовершенствованная запись
- •Массивы
- •Объявление массива
- •Обращение к ячейкам массива
- •Динамический массив
- •ЗАДАНИЕ
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •ЛР 3. Объекты и классы
- •Проектирование класса
- •Управление жизненным циклом объекта
- •Опережающее объявление класса
- •Ограничение видимости членов класса
- •Свойства объекта
- •Особенности объявления методов
- •Поля класса и методы класса
- •Иерархия наследования
- •Полиморфизм
- •ЗАДАНИЕ
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •ЛР4. Опорные классы VCL
- •Класс TObject
- •Класс TPersistent
- •Основа компонента, класс TComponent
- •Владение компонентом
- •Класс TControl
- •Принадлежность к родительскому контейнеру
- •Размещение и размеры элемента управления
- •События, связанные с изменением размеров
- •Выравнивание элемента управления в контейнере
- •Видимость и активность элемента управления
- •Задание
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант5
- •Совет
- •ЛР5. Обработка клавиатурных событий и событий мышки
- •Щелчки кнопками мыши
- •Перемещение указателя мыши
- •Вращение колесика мыши
- •Операция перетаскивания drag and drop
- •Обработка событий клавиатуры
- •Задание
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •ЛР 6. Классы потоков данных
- •Прототип потоков данных, класс TStream
- •Потоки с дескриптором, класс THandleStream
- •Файловый поток данных, класс TFileStream
- •Пример работы с файловым потоком данных
- •Задание
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
Языки программирования
ЛР4. Опорные классы VCL
Задача этой лабораторной работы — дать студенту общее представление о концепции построения библиотеки и о ключевых классах VCL. В результате вы станете владеть методологией, которая упростит изучение любого класса VCL, и позволит на профессиональном уровне применять компоненты Delphi в своих проектах.
На рис. 4.1 представлен фрагмент иерархии наследования классов Delphi. Здесь вы обнаружите наиболее важные классы VCL. Почему поставлен акцент на слово "важные"? Потому, что именно эти классы определяют основные родовые черты своих многочисленных потомков. Изучив опорные классы VCL, мы получим представление о ключевых особенностях всех классов библиотеки.
Класс TObject
К задачам, решаемым классом TObject, в первую очередь стоит отнести:
создание, поддержку и уничтожение объекта; распределение, инициализацию и освобождение памяти, необходимой для этого объекта;
возврат всей информации об экземпляре класса, в том числе данных RTTI об опубликованных свойствах и методах объекта;
поддержку взаимодействия объекта с внешней средой с помощью сообщений и интерфейсов.
Наиболее важными методами для любого из классов VCL считаются конструктор и деструктор — они управляют существованием объекта.
constructor Create; //создание объекта destructor Destroy; //разрушение объекта
Пока мы видим наиболее простое объявление конструктора и деструктора, в ряде более поздних классов методы усложнятся и дополнятся параметрами.
В составе класса TObject имеется ряд полнофункциональных обычных методов и методов класса (class function), позволяющих получить подробную метаинформацию о классе. Ключевые методы TObject представлены в табл. 4.1.
|
Таблица 4.1. Получение сведений о классе |
|
|
Метод |
Описание |
|
|
class function ClassName: string; |
Функции возвратят текстовую строку с названием |
|
класса |
class function UnitName: string; |
Имя модуля, в котором описан класс |
function ClassType: TClass; inline; |
Возвратит описание класса |
class function ClassNameIs(const Name: |
Проверка, является ли объект экземпляром класса |
string): Boolean; |
Name |
class function InheritsFrom(AClass: |
Проверка, является ли объект потомком класса AClass |
TClass): Boolean; |
|
class function ClassParent: TClass; |
Возвратит непосредственного предка объекта |
class function MethodName(Address: |
Возвращает имя метода по указателю. Метод должен |
Pointer): string; |
быть опубликован в секции published |
38
СКФУ Кафедра компьютерной безопасности
КафедраСКФУ |
|
|
|
|
|
TObject |
|
|
|
|
|
|
|
|
|
(System) |
|
|
|
компьютерной |
|
Exception |
TList |
|
TPersistent |
... |
TStream |
TEnumerable<T> |
|
|
... |
Generics.Collectio |
|||||||
|
|
(SysUtils) |
(Classes) |
(Classes) |
(Classes) |
||||
|
|
|
|
ns |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
Искл. ситуации |
|
Списки |
TStrings |
TComponent |
TCollection |
Потоки |
Шаблоны |
|
|
|
|
|
|
|
|||
|
|
EAbort |
|
TObjectList |
(Classes) |
(Classes) |
(Classes) |
TFileStream |
TStack<T> |
|
|
|
|
|
|
||||
безопасности |
.4.Рис |
(SysUtils) |
|
(Contnrs) |
|
|
|
(Classes) |
|
EExternal |
TComponentList |
... |
|
... |
TMemoryStream |
TList<T> |
|||
|
|
... |
|
... |
|||||
|
|
(SysUtils) |
|
(Contnrs) |
|
|
|
(Classes) |
|
|
|
... |
|
... |
Наборы строк |
|
Коллекции |
|
|
|
|
|
|
|
|
|
|
||
|
.1 |
... |
|
... |
|
|
|
... |
... |
|
Опорные |
|
|
|
|
|
|
... |
|
|
|
|
|
TControl |
... |
TFmxObject |
|
|
|
|
|
|
|
|
(Controls) |
|
(FMX.Types) |
|
|
|
классы |
TWinControl |
TGraphicControl |
TCommonDialog |
TMenu |
|
|
|
|
|
VCL |
(Controls) |
(Controls) |
(Dialogs) |
(Menus) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
... |
... |
... |
|
|
|
|
|
|
|
|
Элементы управления |
Компоненты FMX для кроссплатформенных приложений FireMonkey |
39
программирования Языки