- •ЛР 1. Операторы и выражения Delphi
- •Оператор присваивания
- •Арифметические операторы
- •Оператор конкатенации строк
- •Логические операторы
- •Операторы поразрядного сдвига
- •Операторы отношения
- •Условный оператор if..then..else
- •Оператор-селектор case
- •Оператор перехода goto
- •Операторы множеств
- •Составной оператор begin..end
- •Оператор 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
- •Обработка событий клавиатуры
- •Вариант 5
- •Задание
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •ЛР 6. Классы потоков данных
- •Прототип потоков данных, класс TStream
- •Потоки с дескриптором, класс THandleStream
- •Файловый поток данных, класс TFileStream
- •Пример работы с файловым потоком данных
- •Задание
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
Языки программирования
Класс TControl
Визуальные компоненты наследуют от TControl свойства, методы и события, связанные с установкой местоположения компонента на форме, особенностями взаимодействия с командными объектами TAction и всплывающим меню, оперативной подсказкой, откликами на события мыши (в том числе операцию перетаскивания drag and drop).
Принадлежность к родительскому контейнеру
В момент попадания элемента управления на форму проекта в первую очередь ему присваивается имя (свойство Name) и назначается владелец (свойство Owner). Затем для элемента управления назначается компонент-контейнер. Контейнер предоставит в распоряжение элементу управления часть своей поверхности (клиентской области). Элемент управления запоминает ссылку на родительский контейнер, для этого предназначено свойство
property Parent: TWinControl;
С ролью контейнера справится далеко не любой визуальный элемент управления. Для этого подойдут только оконные элементы (компоненты, предком которых выступает класс
TWinControl).
Размещение и размеры элемента управления
При размещении компонента на форме (или на любом другом компоненте, способном передавать свою клиентскую область в распоряжение элементов управления) следует учитывать, что в приложениях Windows за начальную точку системы координат (0, 0) принимается левый верхний угол клиентской части родительского контейнера. Из этой точки проведены две оси: ось x по горизонтали и по вертикали ось y. Ось x направлена слева направо, а ось y направлена сверху вниз
(рис. 4.3).
Width
ClientWidth |
Height |
ClientHeight |
Left |
Width |
(0, 0) |
x |
|
|
Top |
|
Height |
|
y |
|
Рис. 4.3. Размеры и местоположение элемента управления
Место и размеры элемента управления хранятся в свойствах
property Left: Integer;{расстояние от левого края контейнера до элемента} property Top: Integer; {расстояние от верхнего среза
клиентской области контейнера} property Height: Integer; {высота элемента управления} property Width: Integer; {ширина элемента управления}
Для выяснения (а в ряде случаев и переопределения) размеров клиентской области элемента управления или формы воспользуйтесь свойствами:
42
СКФУ Кафедра компьютерной безопасности
Языки программирования
property ClientHeight: Integer; //высота клиентской области property ClientWidth: Integer; //ширина клиентской области
События, связанные с изменением размеров
Некоторые потомки класса TControl обладают способностью реагировать на изменение своих размеров. Эта реакция выражается в форме трех последовательно вызываемых событий (табл. 4.2).
|
Таблица 4.2. События изменения размеров элемента управления |
|
|
|
|
Событие |
Описание |
|
|
|
|
property OnCanResize: |
Событие предваряет попытку элемента управления изменить |
|
TCanResizeEvent; |
свои габариты. Аргументы NewWidth и NewHeight содержат |
|
type TCanResizeEvent = |
новые предполагаемые размеры объекта. Программист |
|
procedure(Sender: TObject; |
может согласиться с этими размерами или отказаться от |
|
var |
NewWidth, NewHeight: Integer; |
предложенных значений. Для этого следует воспользоваться |
var |
Resize: Boolean) of object; |
последним параметром Resize |
property OnConstrainedResize: |
Контролирует, чтобы размеры элемента управления |
|
TConstrainedResizeEvent; |
оказались в пределах, определенных параметрами |
|
type TConstrainedResizeEvent = |
MinWidth, MinHeight, MaxWidth и MaxHeight |
|
procedure(Sender: TObject; |
|
|
var |
MinWidth, MinHeight, MaxWidth, |
|
MaxHeight: Integer) of object; |
|
|
property OnResize: TNotifyEvent; |
Уведомляет о том, что изменение размеров элемента |
|
|
|
управления завершено |
Выравнивание элемента управления в контейнере
Простейший и одновременно наиболее востребованный способ выравнивания элемента управления в границах клиентской области контейнера предоставляет свойство
property Align: TAlign; //по умолчанию выключено (Align=alNone)
Свойство обеспечивает выравнивание по левой, правой, верхней или нижней границам контейнера
(рис. 4.4).
Align=alTop
Align=alRight
Align=alLeft
Align=alClient
Align=alBottom
Рис. 4.4. Выравнивание элемента управления с помощью свойства Align
43
СКФУ Кафедра компьютерной безопасности
