ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 277
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
ЛР 1. Операторы и выражения Delphi
Управление жизненным циклом объекта
Ограничение видимости членов класса
Особенности объявления методов
Принадлежность к родительскому контейнеру
Размещение и размеры элемента управления
Видимость и активность элемента управления
ЛР5. Обработка клавиатурных событий и событий мышки
панели должны самостоятельно подстраиваются под новые размеры.
В момент создания главной формы приложения динамически создайте 15 фигур TShape, из них 5 квадратов, 5 кругов и 5 квадратов со скруглёнными углами. Разместите фигуры на форме в три колонки (квадраты слева, круги по центру и квадраты со скруглёнными углами справа).
При изменении размеров формы фигуры должны самостоятельно подстраиваться под вертикальный размер, сохраняя свои позиции по горизонтали.
В момент создания главной формы приложения динамически создайте 20 строк ввода TEdit. В свойстве Text строк ввода должен находиться порядковый номер компонента (от 1 до 20). Разместите элементы управления на форме в две колонки, так, чтобы строки ввода с нечётными значениями расположились у левой границы формы, а с чётными — у правой.
При изменении размеров формы строки ввода должны самостоятельно выравниваться по соответствующему краю.
В момент создания главной формы приложения динамически создайте 64 прямоугольника с помощью компонента TShape. Окрасьте фигуры в чёрный и белый цвета и равномерно разместите по клиентской части формы, так чтобы получилась мозаика, напоминающая шахматную доску.
При изменении размеров формы ячейки “шахматной доски” должны самостоятельно подстраиваются под новые размеры.
В момент создания главной формы приложения динамически создайте 8 белых и 8 чёрных прямоугольников с помощью компонента TShape. Разместите созданные фигуры по диагоналям формы так
, чтобы в диагонали находились фигуры одного цвета
При изменении размеров формы прямоугольники должны самостоятельно подстраиваются под новые размеры.
Совет
В классе TControl определена реакция на большую часть событий инициируемых с помощью мыши. Эти события можно условно разделить на 4 группы:
Самым востребованным событием в Delphi является щелчок левой кнопкой мыши над областью компонента.
property OnClick: TNotifyEvent;
Событие OnClick() не только самое распространенное, но и наиболее простое с точки зрения обработки. Это событие у всех элементов управления описывается процедурой
type TNotifyEvent = procedure(Sender: TObject) of object;
обладающей всего одним параметром — Sender, в котором находится ссылка на объект, послуживший источником события.
Внимание!
Параметр Sender имеется во всех обработчиках событий, благодаря ему программист сможет идентифицировать вызвавший событие элемент управления.
Рассмотрим пример, демонстрирующий возможность разделять один обработчик события сразу несколькими элементами управления. Для реализации примера разместите на главной форме проекта кнопку Button1:TButton, многострочный редактор Memo1:TMemo и несколько любых других визуальных элементов управления, которые вы найдете на палитре компонентов Delphi.
Выберите кнопку Button1 и напишите всего одну строку кода в
обработчике события (листинг 5.1).
Листинг 5.1. Получение имени компонента по параметру Sender
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add((Sender as TComponent).Name);
end;
Щелчок по кнопке приводит к появлению в многострочном редакторе Memo1 строки с именем компонента, вызвавшего событие (в данном случае кнопки Button1).
Выберите на форме любой другой компонент. Перейдите на вкладку Events (События) в Инспекторе объектов, в перечне событий найдите событие OnClick и сопоставьте с ним событие Button1Click (рис. 5.1). Наши действия приведут к тому, что два компонента станут разделять между собой один общий обработчик события. Аналогичным образом подключите к событию все остальные компоненты (включая форму) и запустите проект на выполнение. Щелкните по любому из компонентов — его имя сразу появится в отдельной строке многострочного редактора Memo1.
Рис. 5.1. Разделение одного обработчика события между несколькими компонентами
Наряду с одинарным щелчком большой популярностью пользуется двойной щелчок кнопкой мыши над элементом управления. А в ответ на это у потомков TControl генерируется событие
property OnDblClick: TNotifyEvent;
Как видите, событие двойного щелчка кнопкой мыши типизирована процедурой TNotifyEvent, поэтому обработка двойного щелчка ведется по таким же правилам, что обработка одинарного.
Более широкие возможности предоставляют обработчики, раздельно контролирующие нажатие и отпускание кнопок мыши:
property OnMouseDown: TMouseEvent; //кнопка нажимается property OnMouseUp : TMouseEvent; //кнопка отпускается где:
TMouseEvent
= procedure (Sender: TObject;Button: TMouseButton;
Shift: TShiftState; X, Y: Integer) of object;
В табл. 5.1 представлен список параметров, позволяющих описывать реакцию элемента управления на событие.
Таблица5.1.ОписаниепараметровTMouseEvent
Простейший прием обработки события
Вариант 2
В момент создания главной формы приложения динамически создайте 15 фигур TShape, из них 5 квадратов, 5 кругов и 5 квадратов со скруглёнными углами. Разместите фигуры на форме в три колонки (квадраты слева, круги по центру и квадраты со скруглёнными углами справа).
При изменении размеров формы фигуры должны самостоятельно подстраиваться под вертикальный размер, сохраняя свои позиции по горизонтали.
Вариант 3
В момент создания главной формы приложения динамически создайте 20 строк ввода TEdit. В свойстве Text строк ввода должен находиться порядковый номер компонента (от 1 до 20). Разместите элементы управления на форме в две колонки, так, чтобы строки ввода с нечётными значениями расположились у левой границы формы, а с чётными — у правой.
При изменении размеров формы строки ввода должны самостоятельно выравниваться по соответствующему краю.
Вариант 4
В момент создания главной формы приложения динамически создайте 64 прямоугольника с помощью компонента TShape. Окрасьте фигуры в чёрный и белый цвета и равномерно разместите по клиентской части формы, так чтобы получилась мозаика, напоминающая шахматную доску.
При изменении размеров формы ячейки “шахматной доски” должны самостоятельно подстраиваются под новые размеры.
Вариант5
В момент создания главной формы приложения динамически создайте 8 белых и 8 чёрных прямоугольников с помощью компонента TShape. Разместите созданные фигуры по диагоналям формы так
, чтобы в диагонали находились фигуры одного цвета
При изменении размеров формы прямоугольники должны самостоятельно подстраиваются под новые размеры.
Совет
-
В момент создания главной формы проекта у неё возникает событие OnCreate(). -
Чтобы ваше приложение смогло отреагировать на изменение размера формы воспользуйтесь событием OnResize() формы проекта!
ЛР5. Обработка клавиатурных событий и событий мышки
В классе TControl определена реакция на большую часть событий инициируемых с помощью мыши. Эти события можно условно разделить на 4 группы:
-
щелчки кнопками мыши по элементу управления; -
перемещение указателя мыши над элементом управления; -
вращение колесика мыши; -
операция перетаскивания drag and drop.
Щелчки кнопками мыши
Самым востребованным событием в Delphi является щелчок левой кнопкой мыши над областью компонента.
property OnClick: TNotifyEvent;
Событие OnClick() не только самое распространенное, но и наиболее простое с точки зрения обработки. Это событие у всех элементов управления описывается процедурой
type TNotifyEvent = procedure(Sender: TObject) of object;
обладающей всего одним параметром — Sender, в котором находится ссылка на объект, послуживший источником события.
Внимание!
Параметр Sender имеется во всех обработчиках событий, благодаря ему программист сможет идентифицировать вызвавший событие элемент управления.
Рассмотрим пример, демонстрирующий возможность разделять один обработчик события сразу несколькими элементами управления. Для реализации примера разместите на главной форме проекта кнопку Button1:TButton, многострочный редактор Memo1:TMemo и несколько любых других визуальных элементов управления, которые вы найдете на палитре компонентов Delphi.
Выберите кнопку Button1 и напишите всего одну строку кода в
обработчике события (листинг 5.1).
Листинг 5.1. Получение имени компонента по параметру Sender
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add((Sender as TComponent).Name);
end;
Щелчок по кнопке приводит к появлению в многострочном редакторе Memo1 строки с именем компонента, вызвавшего событие (в данном случае кнопки Button1).
Выберите на форме любой другой компонент. Перейдите на вкладку Events (События) в Инспекторе объектов, в перечне событий найдите событие OnClick и сопоставьте с ним событие Button1Click (рис. 5.1). Наши действия приведут к тому, что два компонента станут разделять между собой один общий обработчик события. Аналогичным образом подключите к событию все остальные компоненты (включая форму) и запустите проект на выполнение. Щелкните по любому из компонентов — его имя сразу появится в отдельной строке многострочного редактора Memo1.
Рис. 5.1. Разделение одного обработчика события между несколькими компонентами
Наряду с одинарным щелчком большой популярностью пользуется двойной щелчок кнопкой мыши над элементом управления. А в ответ на это у потомков TControl генерируется событие
property OnDblClick: TNotifyEvent;
Как видите, событие двойного щелчка кнопкой мыши типизирована процедурой TNotifyEvent, поэтому обработка двойного щелчка ведется по таким же правилам, что обработка одинарного.
Более широкие возможности предоставляют обработчики, раздельно контролирующие нажатие и отпускание кнопок мыши:
property OnMouseDown: TMouseEvent; //кнопка нажимается property OnMouseUp : TMouseEvent; //кнопка отпускается где:
TMouseEvent
= procedure (Sender: TObject;Button: TMouseButton;
Shift: TShiftState; X, Y: Integer) of object;
В табл. 5.1 представлен список параметров, позволяющих описывать реакцию элемента управления на событие.
Таблица5.1.ОписаниепараметровTMouseEvent
Параметр | Возможные значения | Описание |
Sender | Ссылка на объект | Ссылка на источник сообщения |
Button | mbLeft | Щелчок левой кнопкой мыши |
mbRight | Щелчок правой кнопкой мыши | |
mbMiddle | Щелчок центральной кнопкой мыши | |
Shift | ssShift | Удерживается в нажатом состоянии клавиша |
ssAlt | Удерживается в нажатом состоянии клавиша | |
ssCtrl | Удерживается в нажатом состоянии клавиша | |
ssLeft | Нажимается/отпускается левая кнопка мыши | |
ssRight | Нажимается/отпускается правая кнопка мыши | |
ssMiddle | Нажимается/отпускается центральная кнопка мыши | |
ssDouble | Двойной щелчок любой кнопкой |
X, Y | Integer | Координаты указателя мыши |
Простейший прием обработки события