程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 一種居於JvMouseGesture.pas的鼠標手勢系統

一種居於JvMouseGesture.pas的鼠標手勢系統

編輯:Delphi

盡管高版本的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中測試通過,其他版本未經測試

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved