HTML Canvas for MORFIK
Browser Support:
Internet Explorer 9+, Firefox, Opera, Chrome, and Safari
OnMouseOver Property
Class THtml5Canvas2D
The OnMouseOver event occurs when the pointer is moved onto a THtml5Canvas2D instance.
Property Values
Set or get the pointer of the method which receives the mouse over event call.
Datatype definiton:
TCanvasMouseMoveEvent = Procedure (Event: TDOMEvent; X: Integer; Y: Integer) of object;
Examples:
Move your pointer over the yellow rectangle to fire the OnMouseOver event.
Procedure frmOnMouseOver.DrawText(Text: String); Begin // draw text background area Canvas.FillStyle := clKhaki; Canvas.FillRect(0, 0, Canvas.Width, Canvas.Height); // draw text Canvas.FillStyle := clBlack; Canvas.FillText(Text, 115, 30); End;
Procedure frmOnMouseOver.OnCanvasMouseOver(Event: TDOMEvent; X: Integer; Y: Integer); Begin DrawText('OnMouseOver position: ' + X.ToString + ', ' + Y.ToString); End;
Procedure frmOnMouseOver.WebFormReady(Var Ready: Boolean); Var l_Font: TCanvasFont; Begin // create canvas instance Canvas := THtml5Canvas2D.Create(ConCanvasParent); Canvas.Top := 30; Canvas.Left := 50; Canvas.Width := 540; Canvas.Height := 50; if Canvas.CreateDOMObject Then Begin // set font l_Font := Canvas.CreateFont; l_Font.Size := 20; l_Font.Family := 'Arial'; l_Font.Weight := cfwBold; Canvas.Font := l_Font; // set mouse-over-event method pointer Canvas.OnMouseOver := @OnCanvasMouseOver; // draw initial text DrawText('OnMouseOver position: n/a'); End; End;
The following code is a complete event example. Move your pointer over the yellow rectangle, click and double click to fire the events.
Unit frmEventExample;
Interface
Uses dspack_Html5Canvas;
Type TEventExample = Class(THtml5Canvas2D) Private Procedure DrawCoordinateText(Text: String; XPos, YPos: Integer); function ButtonToStr(Button: TCanvasMouseButton): String; Procedure OnCanvasMouseOver(Event: TDOMEvent; X: Integer; Y: Integer); Procedure OnCanvasMouseMove(Event: TDOMEvent; X: Integer; Y: Integer); Procedure OnCanvasMouseOut(Event: TDOMEvent; X: Integer; Y: Integer); Procedure OnCanvasMouseDown(Event: TDOMEvent; Button: TCanvasMouseButton; X: Integer; Y: Integer); Procedure OnCanvasMouseUp(Event: TDOMEvent; Button: TCanvasMouseButton; X: Integer; Y: Integer); Procedure OnCanvasClick(Event: TDOMEvent; Button: TCanvasMouseButton; X: Integer; Y: Integer); Procedure OnCanvasDoubleClick(Event: TDOMEvent; Button: TCanvasMouseButton; X: Integer; Y: Integer); Public Function CreateDOMObject: Boolean; Override; End;
frmEventExample = Class(Form) ConCanvasParent : Container; Procedure WebFormReady(Var Ready: Boolean); Message; Procedure WebFormClose; Message; Private m_EventExample: TEventExample; End;
Implementation
Procedure TEventExample.DrawCoordinateText(Text: String; XPos, YPos: Integer); Begin // draw text background area FillStyle := clKhaki; FillRect(0, YPos - 20, Width, TCanvasFont(Font).Size + 7); // draw text FillStyle := clBlack; FillText(Text, XPos, YPos); End;
Function TEventExample.ButtonToStr( Button: TCanvasMouseButton): String; Begin Case Button Of cmbLeft: Result := '(left button)'; cmbMiddle: Result := '(middle button)'; cmbRight: Result := '(right button)'; Else Result := '(unknown button)'; End; End;
Procedure TEventExample.OnCanvasMouseOver(Event: TDOMEvent; X: Integer; Y: Integer); Begin DrawCoordinateText('OnMouseOver position: ' + X.ToString + ', ' + Y.ToString, 45, 30); End;
Procedure TEventExample.OnCanvasMouseMove(Event: TDOMEvent; X: Integer; Y: Integer); Begin DrawCoordinateText('OnMouseMove position: ' + X.ToString + ', ' + Y.ToString, 40, 60); End;
Procedure TEventExample.OnCanvasMouseOut(Event: TDOMEvent; X: Integer; Y: Integer); Begin DrawCoordinateText('OnMouseOut position: ' + X.ToString + ', ' + Y.ToString, 56, 90); End;
Procedure TEventExample.OnCanvasMouseDown(Event: TDOMEvent; Button: TCanvasMouseButton; X: Integer; Y: Integer); Begin DrawCoordinateText('OnMouseDown position: ' + X.ToString + ', ' + Y.ToString + ' ' + ButtonToStr(Button), 38, 1120); End;
Procedure TEventExample.OnCanvasMouseUp(Event: TDOMEvent; Button: TCanvasMouseButton; X: Integer; Y: Integer); Begin DrawCoordinateText('OnMouseUp position: ' + X.ToString + ', ' + Y.ToString + ' ' + ButtonToStr(Button), 65, 150); End;
Procedure TEventExample.OnCanvasClick(Event: TDOMEvent; Button: TCanvasMouseButton; X: Integer; Y: Integer); Begin DrawCoordinateText('OnClick position: ' + X.ToString + ', ' + Y.ToString + ' ' + ButtonToStr(Button), 108, 180); End;
Procedure TEventExample.OnCanvasDoubleClick(Event: TDOMEvent; Button: TCanvasMouseButton; X: Integer; Y: Integer); Begin DrawCoordinateText('OnDoubleClick position: ' + X.ToString + ', ' + Y.ToString + ' ' + ButtonToStr(Button), 42, 210); End;
Function TEventExample.CreateDOMObject: Boolean; Var l_Font: TCanvasFont; Begin Result := Inherited CreateDOMObject; If Result Then Begin // enable mouse wheel handling HandleMouseWheel := True; // draw background rect FillStyle := clKhaki; FillRect(0,0,Width,Height); // create and set font to use l_Font := CreateFont; l_Font.Size := 20; l_Font.Family := 'Arial'; l_Font.Weight := cfwBold; Font := l_Font; // draw initial text FillStyle := clBlack; FillText('OnMouseOver position: n/a', 45,30); FillText('OnMouseMove position: n/a', 40,60); FillText('OnMouseOut position: n/a', 56,90); FillText('OnMouseDown position: n/a', 38,120); FillText('OnMouseUp position: n/a', 65,150); FillText('OnClick position: n/a', 108,180); FillText('OnDoubleClick position: n/a', 42,210); // set mouse oven event method pointer OnMouseOver := @OnCanvasMouseOver; OnMouseMove := @OnCanvasMouseMove; OnMouseOut := @OnCanvasMouseOut; OnMouseDown := @OnCanvasMouseDown; OnMouseUp := @OnCanvasMouseUp; OnClick := @OnCanvasClick; OnDoubleClick := @OnCanvasDoubleClick; End; End;
Procedure frmEventExample.WebFormReady(Var Ready: Boolean); Begin m_EventExample := TEventExample.Create(ConCanvasParent); m_EventExample.Top := 30; m_EventExample.Left := 50; m_EventExample.Width := 540; m_EventExample.Height := 230; m_EventExample.CreateDOMObject; End;
|