реферат Простые операторы. Характеристика форм.docx. Лр операторы и выражения Delphi
Скачать 1.3 Mb.
|
ЛР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
Простейший прием обработки события нажатия на кнопку мыши предложен в листинге 5.2. Листинг 5.2. Обработка события нажатия кнопки мыши procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (ssAlt in Shift) //если удерживается клавиша and (Button=mbRight) //и пользователь нажимает правую кнопку мыши then //реакция на нажатие кнопки end; |