Главная страница
Навигация по странице:

  • Листинг

  • Таблица

  • Параметр Возможные

  • реферат Простые операторы. Характеристика форм.docx. Лр операторы и выражения Delphi


    Скачать 1.3 Mb.
    НазваниеЛр операторы и выражения Delphi
    Дата17.04.2023
    Размер1.3 Mb.
    Формат файлаdoc
    Имя файлареферат Простые операторы. Характеристика форм.docx.doc
    ТипПрограмма
    #1067638
    страница20 из 26
    1   ...   16   17   18   19   20   21   22   23   ...   26

    ЛР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.
    docshapegroup476

    Рис. 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

    Координаты указателя мыши


    Простейший прием обработки события нажатия на кнопку мыши предложен в листинге 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;

    1   ...   16   17   18   19   20   21   22   23   ...   26


    написать администратору сайта