Компоненты Rave Reports и отчеты в приложении Delphi

       

Свойства и методы класса mouse



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

Объявление

Тип



Описание

property Capture: HWND;

Pu

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

property CursorPos: TPoint;

Pu 

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

property Draglmmediate: Boolean;

Ro

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

property DragThreshold: Integer;

Ro

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

property MousePresent: Boolean;

Ro

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

type UINT = LongWord; property RegWheelMessage: UINT;

Ro

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

property WheelPresent: Boolean;

Ro

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

property WheelScrollLines : Integer;

Ro

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

 Листинг 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 TimerTimer(Sender: TObject);

 private

MouseRect: TRect;

IsDown: Boolean;

RectColor: TColor;

 public

{ Public declarations }

 end;

var

MainForm: TMainForm;

implementation {$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 ColorDlg.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.FonnMouseMove(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),

Point(Right, Bottom), Point(Left, Bottom), Point(Left, Top)]);

Right := X;

Bottom := Y;

Canvas.Pen.Color := RectColor;

Canvas.Polyline([Point(Left, Top), Point(Right, Top),

Point(Right, Bottom), Point(Left, Bottom), Point(Left, Top)]);

 end;

with StatusBar do begin

Panels [4] .Text := 'IHwpMHa: ' + IntToStr(Abs(MouseRect.Right - MouseRect.Left));

Panels[5].Text := 'BacoTa: ' + IntToStr(Abs(MouseRect.Bottom - MouseRect.Top));

end; end;

procedure TMainForm.TimerTimer(Sender: TObject); 

begin

with StatusBar do 

begin

Panels[0].Text := 'flaTa: ' + DateToStr(Now); Panels[1].Text := 'BpeMH: ' + TimeToStr(Now);

 end; 

end;

end.

При нажатии левой кнопки мыши в методе-обработчике FormMouseDown включается режим рисования прямоугольника (isDown := True) и задаются его начальные координаты.

При перемещении мыши по форме проекта вызывается метод-обработчик FormMouseMove, в котором координаты курсора и размеры прямоугольника передаются на панель состояния. Если левая кнопка мыши нажата (isDown = True), то осуществляется перерисовка прямоугольника.

При отпускании кнопки мыши в методе FormMouseUp рисование прямоугольника прекращается (isDown := False).

Если была нажата правая кнопка мыши, то метод-обработчик FormMouseDown обеспечивает отображение диалога выбора цвета, который позволяет сменить цвет линий прямоугольника.

Метод-обработчик TimerTimer обеспечивает отображение на панели состояния текущей даты и времени.

Примечание
Примечание

Для рисования прямоугольника использовался метод PolyLine, который работает при перемещении курсора влево и вверх относительно начальной точки. Для стирания старого прямоугольника желательно использовать режимы XOR и NOTXOR, которые обеспечивают восстановление рисунка под линией. Подробно об этом см. гл. 10.



Содержание раздела