使用delphi程序动态改变当前鼠标箭头的样式

简便的方法:

其实可以简化问题用TScreen对象的功能就可以了: 
Screen.Cursor:=crHandPoint;

--------------------------------------------------------

较复杂的方式 使用API函数 和消息

用SetCursor要拦截WM_SETCURSOR以下是一个例子: 
unit Unit1; 

interface 

uses 
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
Dialogs, StdCtrls, BtnEdit, Buttons; 

type 
TForm1 = class(TForm) 
BtnEdit1: TBtnEdit; 
BtnEdit2: TBtnEdit; 
Edit1: TEdit; 
SpeedButton1: TSpeedButton; 
procedure SpeedButton1Click(Sender: TObject); 
private 
{ Private declarations } 
ChangeCursor:boolean; 
procedure WMSetCursor(var Msg:TMessage);message WM_SETCURSOR; 
public 
{ Public declarations } 
end; 

var 
Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.SpeedButton1Click(Sender: TObject); 
begin 
ChangeCursor:=Not ChangeCursor; 
end; 

procedure TForm1.WMSetCursor(var Msg: TMessage); 
begin 
if ChangeCursor then 
SetCursor(LoadCursor(0,IDC_HAND)) 
else 
inherited; 
end; 

end.  

posted @ 2011-12-10 20:43  wmymtx  阅读(1182)  评论(0)    收藏  举报