RAD Studio VCL Reference
|
Occurs when the user moves the mouse pointer while the mouse pointer is over a control.
property OnMouseMove: TMouseMoveEvent;
__property TMouseMoveEvent OnMouseMove;
Use the OnMouseMove event handler to respond when the mouse pointer moves after the control has captured the mouse.
Use the Shift parameter of the OnMouseDown event handler, to determine to the state of the shift keys and mouse buttons. Shift keys are the Shift, Ctrl, and Alt keys or shift key-mouse button combinations. X and Y are pixel coordinates of the new location of the mouse pointer in the client area of the Sender.
C++ Examples:
/* The following example requires a form with a four-paneled status bar. (Set the Width of the status panels to 150 before running this example). When the user presses a mouse button, moves the mouse, and releases the mouse button, a rectangle is drawn on the form. When the mouse button is released, the rectangle appears on the form’s canvas. Its top-left and bottom-right corners are defined by the location of the mouse pointer when the user pressed and released the mouse button. While the user drags the mouse, the location of the top, left, bottom, and right sides of the rectangle are displayed in the status bar. */ int StartX, StartY; // Declare at the top of the form’s unit // Use this code as the OnMouseDown event handler of the form: void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { StartX = X; StartY = Y; } // Use this code as the OnMouseUp event handler of the form: void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Form1->Canvas->Rectangle(StartX, StartY, X, Y); StatusBar1->Panels->Items[0]->Text = ""; StatusBar1->Panels->Items[1]->Text = ""; StatusBar1->Panels->Items[2]->Text = ""; StatusBar1->Panels->Items[3]->Text = ""; } // Use this code as the OnMouseMove event handler of the form: void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (Shift.Contains(ssLeft)) // make sure button is down { if (Y > StartY) { StatusBar1->Panels->Items[0]->Text = "Top: " + IntToStr(StartY); StatusBar1->Panels->Items[2]->Text = "Bottom: " + IntToStr(Y); } else { StatusBar1->Panels->Items[0]->Text = "Top: " + IntToStr(Y); StatusBar1->Panels->Items[2]->Text = "Bottom: " + IntToStr(StartY); } if (X > StartX) { StatusBar1->Panels->Items[1]->Text = "Left: " + IntToStr(StartX); StatusBar1->Panels->Items[3]->Text = "Right: " + IntToStr(X); } else { StatusBar1->Panels->Items[1]->Text = "Left: " + IntToStr(X); StatusBar1->Panels->Items[3]->Text = "Right: " + IntToStr(StartX); } } }
Delphi Examples:
{ The following example requires a form with a four-paneled status bar. (Set the Width of the status panels to 150 before running this example). When the user presses a mouse button, moves the mouse, and releases the mouse button, a rectangle is drawn on the form. When the mouse button is released, the rectangle appears on the form’s canvas. Its top-left and bottom-right corners are defined by the location of the mouse pointer when the user pressed and released the mouse button. While the user drags the mouse, the location of the top, left, bottom, and right sides of the rectangle are displayed in the status bar. } procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin StartX := X; StartY := Y; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Form1.Canvas.Rectangle(StartX, StartY, X, Y); StatusBar1.Panels[0].Text := ''; StatusBar1.Panels[1].Text := ''; StatusBar1.Panels[2].Text := ''; StatusBar1.Panels[3].Text := ''; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then { make sure button is down } begin if Y > StartY then begin StatusBar1.Panels[0].Text := 'Top: ' + IntToStr(StartY); StatusBar1.Panels[2].Text := 'Bottom: ' + IntToStr(Y); end else begin StatusBar1.Panels[0].Text := 'Top: ' + IntToStr(Y); StatusBar1.Panels[2].Text := 'Bottom: ' + IntToStr(StartY); end; if X > StartX then begin StatusBar1.Panels[1].Text := 'Left: ' + IntToStr(StartX); StatusBar1.Panels[3].Text := 'Right: ' + IntToStr(X); end else begin StatusBar1.Panels[1].Text := 'Left: ' + IntToStr(X); StatusBar1.Panels[3].Text := 'Right: ' + IntToStr(StartX); end; end; end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|