вызывается при прокрутке назад.

В VCL имеется класс ТМоше, содержащий свойства мыши, установленной на компьютере. Обращаться к экземпляру класса, который создается автоматически, можно при помощи глобальной переменной Mouse. Свойства класса представлены в табл. 27.1.

В качестве примера обработки управляющих воздействий от мыши рассмотрим пример DemoMouse. Он очень прост. Перемещение мыши с нажатой левой кнопкой обеспечивает выделение прямоугольного фрагмента. Такую функцию вы можете наблюдать в любом графическом редакторе, а исходный код проекта использовать в собственных разработках (листинг 27.2).

Таблица27.1. Свойстваиметодыкласса TMouse

Объявление

Тип I Описание

prcperty Capture: HWND;

Pu

Дескриптор элемента управления, над которым находится мышь

prcperty CursorPos: TPoixit;

Pu

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

prcperty Dragimmediate: Boolean;

Ro

При значении True реакция на нажатие выполняется немедленно

prcperty DragThreshold: Integer;

Ro

Задержка реакции на нажатие

prcperty MousePresent: Boolean;

Ro

Определяет наличие мыши

type UINT = LongWord;
property RegWheelMessage: UINT;

Ro

Задает сообщение, посылаемое при прокрутке в ScrollMouse

property WheelPresent: Boolean; |

Ro

Определяет наличие ScrollMouse

property WheelScrollLines: Integer; I

Ro

Задает число прокручиваемых линий

j Листинг 27.2. Модуль главной формы проекта DemoMouse

unit Main;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, ComCtrls;

type

TMainForm = class(TForm)

ColorDlg: TColorDialog;
StatusBar: TStatusBar;
Timer: TTimer;
procedure FormMouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
procedure FormMouseUp(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
procedure FormMouseMove(Sender: TObject;
Shift: TShiftState;
X, Y: Integer);

procedure Timer Timer (Sender: TObj ect) ; private

MouseRect: TRect;
IsDown: Boolean;

RectColor: TColor; public

{ Public declarations } end;

var

MainForm: TMainForm; inplerrentat ion {$R *. DFM)

procedure TMainForm.FormMouseDown (Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
begin
if Button = mbLeft then with MouseRect do begin
IsDown := True;
Left := X;
Top := Y;
Right := X;
Bottom := Y;
Canvas.Pen.Color : = RectColor;
end;
if (Button = mbRight) and Co lorDlg. Execute then RectColor := ColorDlg.Color;
end;
procedure TMainForm. FormMouseUp(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
begin
IsDown := False;
Canvas.Pen.Color := Color;

with MouseRect do

Canvas.Polyline([Point(Left, Top) , Point(Right, Top) , Point(Right, Bottom) , Point(Left, Bottom) , Point(Left, Top)]) ;
with StatusBar do begin
Panels[4].Text := ' ';
Panels[5].Text := "
;
end;
end;

procedure TMainForm. FormMouseMove (Sender: TObject; Shift: TShiftState; X,

Y: Integer) ; begin with StatusBar do

begin
Panels[2].Text := 'X: ' + IntToStr(X);
Panels[3].Text := 'Y: ' + IntToStr(Y);
end;

if Not IsDown then Exit; Canvas.Pen.Color := Color; with mouserect do begin Canvas.Polyline([Point(Left, Top) , Point(Right, Top) ,


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Август
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс