盡管高版本的Delphi已經提供強悍的手勢功能,也非常好用,我還是沒能用上,所以自己結合實際,參閱多個組件源碼,改造了JvMouseGesture.pas單元,弄出一個實用的鼠標手勢管理功能,記在這裡,以免硬盤壞了,又要重來。
改造過的JvMouseGesture.pas單元代碼:
改造過的JvMouseGesture增加了幾個東西:
FForm: TForm:用於繪制顯示手勢規矩
FTrackWidth: Cardinal;手勢軌跡寬度
FTrackColor: TColor;手勢軌跡顏色
此外主要改造了以下幾個過程、函數
constructor TJvMouseGesture.Create(AOwner: TComponent); begin inherited Create(AOwner); FGestureList := TStringList.Create; FGestureList.Sorted := True; FDelay := 500; FTrailLimit := 1000; FTrailInterval := 2; FGrid := 15; FTrackColor := clRed; FTrackWidth := 5; FGridHalf := FGrid div 2; FTrailActive := False; FdTolerance := 75; // tolerance for diagonal movement. see processCoordinates() begin FForm := TForm.Create(Self); FForm.TransparentColor := True; FForm.TransparentColorValue := clBlack; FForm.BorderStyle := bsNone; FForm.FormStyle := fsStayOnTop; FForm.DoubleBuffered := True; FForm.Color := clBlack; FLastWndProc := FForm.WindowProc; FForm.WindowProc := WndProc; AdjustSize; FForm.Canvas.Brush.Color := FForm.TransparentColorValue; FForm.Canvas.FillRect(FForm.ClientRect); ShowWindow(FForm.Handle,SW_SHOWNOACTIVATE); Hide; FHided := True; end; LoadGestureTable; FActive := not (csDesigning in ComponentState); end;
FGestureList ;
此處替換了原來的手勢名稱,改為中文,這樣用戶才看得懂
StartMouseGesture這個地方也改造了
此外還定義了一個新的組件,以方便用戶自定義鼠標手勢,其代碼如下:
管理單元代碼改造過的JvMouseGesture.pas和鼠標手勢定義組件下載:
JvMouseGesture.pas
UWSGestureREC
效果圖
暫時就記錄到這裡
代碼在Delphi XE中測試通過,其他版本未經測試