ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 281
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
ЛР 1. Операторы и выражения Delphi
Управление жизненным циклом объекта
Ограничение видимости членов класса
Особенности объявления методов
Принадлежность к родительскому контейнеру
Размещение и размеры элемента управления
Видимость и активность элемента управления
ЛР5. Обработка клавиатурных событий и событий мышки
форме Form1 компонентов с выводом их названия класса и имени в редактор значений ValueListEditor1.
Визуальные компоненты наследуют от TControl свойства, методы и события, связанные с установкой местоположения компонента на форме, особенностями взаимодействия с командными объектами TAction и всплывающим меню, оперативной подсказкой, откликами на события мыши (в том числе операцию перетаскивания drag and drop).
В момент попадания элемента управления на форму проекта в первую очередь ему присваивается имя (свойство Name) и назначается владелец (свойство Owner). Затем для элемента управления назначается компонент-контейнер. Контейнер предоставит в распоряжение элементу управления часть своей поверхности (клиентской области). Элемент управления запоминает ссылку на родительский контейнер, для этого предназначено свойство
property Parent: TWinControl;
С ролью контейнера справится далеко не любой визуальный элемент управления. Для этого подойдут только оконные элементы (компоненты, предком которых выступает класс TWinControl).
При размещении компонента на форме (или на любом другом компоненте, способном передавать свою клиентскую область в распоряжение элементов управления) следует учитывать, что в приложениях Windows за начальную точку системы координат (0, 0) принимается левый верхний угол клиентской части родительского контейнера. Из этой точки проведены две оси: ось x по горизонтали и по вертикали ось y. Ось x направлена слева направо, а ось
y направлена сверху вниз (рис. 4.3).
Рис. 4.3. Размеры и местоположение элемента управления
Место и размеры элемента управления хранятся в свойствах
property Left: Integer;{расстояние от левого края контейнера до элемента}
property Top: Integer; {расстояние от верхнего среза
клиентской области контейнера} property Height: Integer; {высота элемента управления} property Width: Integer; {ширина элемента управления}
Для выяснения (а в ряде случаев и переопределения) размеров клиентской области элемента управления или формы воспользуйтесь свойствами:
property ClientHeight: Integer; //высота клиентской области
property ClientWidth: Integer; //ширина клиентской области
Некоторые потомки класса TControl обладают способностью реагировать на изменение своих размеров. Эта реакция выражается в форме трех последовательно вызываемых событий (табл. 4.2).
Таблица4.2.Событияизмененияразмеровэлементауправления
Простейший и одновременно наиболее востребованный способ выравнивания элемента управления в границах клиентской области контейнера предоставляет свойство
property Align: TAlign; //по умолчанию выключено (Align=alNone)
Свойство обеспечивает выравнивание по левой, правой, верхней или нижней границам контейнера (рис. 4.4).
Align=alTop
Align=alLeft
Align=alRight
Align=alClient
Align=alBottom
Рис. 4.4. Выравнивание элемента управления с помощью свойства Align
Каждый визуальный элемент управления может лишиться права отображаться на экране компьютера. Для этого следует обратиться к методу
procedure Hide; // аналог visible:= false;
Для того чтобы компонент вновь появился на экране, вызывают процедуру
procedure Show; // аналог visible := true;
Вместо этих процедур можно воспользоваться свойством
property Visible: Boolean; //по умолчанию True
позволяющим включить (true) или отключить (false) отображение элемента.
Очень часто вместо того чтобы скрывать от пользователя ненужный компонент, программисты просто переводят его в пассивный режим. Для этого предназначено свойство
property Enabled: Boolean; //по умолчанию true
При установке свойства в состояние false элемент управления перестает реагировать на попытки обратиться к нему.
Разработайте приложение VCL, состоящее из единственной формы и не содержащее ни одного элемента управления.
В момент создания главной формы приложения динамически создайте 25 панелей TPanel и разместите их на форме (по 5 панелей в ряду), так, чтобы они заняли всю клиентскую область формы.
При изменении размеров формы
Класс TControl
Визуальные компоненты наследуют от TControl свойства, методы и события, связанные с установкой местоположения компонента на форме, особенностями взаимодействия с командными объектами TAction и всплывающим меню, оперативной подсказкой, откликами на события мыши (в том числе операцию перетаскивания drag and drop).
Принадлежность к родительскому контейнеру
В момент попадания элемента управления на форму проекта в первую очередь ему присваивается имя (свойство Name) и назначается владелец (свойство Owner). Затем для элемента управления назначается компонент-контейнер. Контейнер предоставит в распоряжение элементу управления часть своей поверхности (клиентской области). Элемент управления запоминает ссылку на родительский контейнер, для этого предназначено свойство
property Parent: TWinControl;
С ролью контейнера справится далеко не любой визуальный элемент управления. Для этого подойдут только оконные элементы (компоненты, предком которых выступает класс TWinControl).
Размещение и размеры элемента управления
При размещении компонента на форме (или на любом другом компоненте, способном передавать свою клиентскую область в распоряжение элементов управления) следует учитывать, что в приложениях Windows за начальную точку системы координат (0, 0) принимается левый верхний угол клиентской части родительского контейнера. Из этой точки проведены две оси: ось x по горизонтали и по вертикали ось y. Ось x направлена слева направо, а ось
y направлена сверху вниз (рис. 4.3).
Рис. 4.3. Размеры и местоположение элемента управления
Место и размеры элемента управления хранятся в свойствах
property Left: Integer;{расстояние от левого края контейнера до элемента}
property Top: Integer; {расстояние от верхнего среза
клиентской области контейнера} property Height: Integer; {высота элемента управления} property Width: Integer; {ширина элемента управления}
Для выяснения (а в ряде случаев и переопределения) размеров клиентской области элемента управления или формы воспользуйтесь свойствами:
property ClientHeight: Integer; //высота клиентской области
property ClientWidth: Integer; //ширина клиентской области
События, связанные с изменением размеров
Некоторые потомки класса TControl обладают способностью реагировать на изменение своих размеров. Эта реакция выражается в форме трех последовательно вызываемых событий (табл. 4.2).
Таблица4.2.Событияизмененияразмеровэлементауправления
Событие | Описание |
property OnCanResize: TCanResizeEvent; type TCanResizeEvent = procedure(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean) of object; | Событие предваряет попытку элемента управления изменить свои габариты. Аргументы NewWidth и NewHeight содержат новые предполагаемые размеры объекта. Программист может согласиться с этими размерами или отказаться от предложенных значений. Для этого следует воспользоваться последним параметром Resize |
property OnConstrainedResize: TConstrainedResizeEvent; type TConstrainedResizeEvent = procedure(Sender: TObject; var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer) of object; | Контролирует, чтобы размеры элемента управления оказались в пределах, определенных параметрами MinWidth, MinHeight, MaxWidth и MaxHeight |
property OnResize: TNotifyEvent; | Уведомляет о том, что изменение размеров элемента управления завершено |
Выравнивание элемента управления в контейнере
Простейший и одновременно наиболее востребованный способ выравнивания элемента управления в границах клиентской области контейнера предоставляет свойство
property Align: TAlign; //по умолчанию выключено (Align=alNone)
Свойство обеспечивает выравнивание по левой, правой, верхней или нижней границам контейнера (рис. 4.4).
Align=alTop
Align=alLeft
Align=alRight
Align=alClient
Align=alBottom
Рис. 4.4. Выравнивание элемента управления с помощью свойства Align
Видимость и активность элемента управления
Каждый визуальный элемент управления может лишиться права отображаться на экране компьютера. Для этого следует обратиться к методу
procedure Hide; // аналог visible:= false;
Для того чтобы компонент вновь появился на экране, вызывают процедуру
procedure Show; // аналог visible := true;
Вместо этих процедур можно воспользоваться свойством
property Visible: Boolean; //по умолчанию True
позволяющим включить (true) или отключить (false) отображение элемента.
Очень часто вместо того чтобы скрывать от пользователя ненужный компонент, программисты просто переводят его в пассивный режим. Для этого предназначено свойство
property Enabled: Boolean; //по умолчанию true
При установке свойства в состояние false элемент управления перестает реагировать на попытки обратиться к нему.
Задание
Разработайте приложение VCL, состоящее из единственной формы и не содержащее ни одного элемента управления.
Вариант 1
В момент создания главной формы приложения динамически создайте 25 панелей TPanel и разместите их на форме (по 5 панелей в ряду), так, чтобы они заняли всю клиентскую область формы.
При изменении размеров формы