怎样才能改变程序crDefault的光标形状?(20分)

  • 主题发起人 主题发起人 softdog
  • 开始时间 开始时间
S

softdog

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在我的整个程序中都使用我自己定义的鼠标光标,可是
Screen.Cursors[crDefault]:= LoadCursorFromFile(pchar(ProgramPath+'mouse.ani'));
这句语句不起作用,是不是crDefault不能修改?
有其他变通的办法吗?


 
我的电脑---控制面板--mouse
 
用image editor试试看,修改系统默认的图标
 
to 张剑波:
我只想在自己程序中改光标。
改控制面板就失去意义了。

to thong_517:
你没看懂我的意思
 
是不是'mouse.ani'这个动画光标的问题?换成普通光标试试?
 
肯定不是文件的问题,因为如果
Screen.Cursors[crArrow]:= LoadCursorFromFile(pchar(ProgramPath+'mouse.ani'));
Screen.Cursor:=crArrow;
这样是可以的,但是只能在当前窗体上改动,没办法在整个程序中都显示这个光标,
而且在当前窗体的某些地方也不能显示这个光标,比如:菜单上。

why?
 
剽窃一个给你瞧瞧
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.DFM}
{$R myres.res}//这一行必须有

procedure ZloadfromResourse(screenindex:integer;name:Pchar);
var td:ticon;
begin
try
td:=ticon.Create;
td.Handle:=LoadIcon(Hinstance,name);
td.SaveToFile('temp.cur');
screen.Cursors[screenindex]:=loadcursorfromfile('temp.cur');
deletefile('temp.cur');
finally
td.free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ZloadfromResourse(2,'icon1');//注意在资源文件中用大写 ICON1,你可以画出任意形状和颜色
Form1.cursor:=2;
end;

end.

 
唉!看来大家还是没有理解我的意思。
 
有没有人能解答我?
 
你少了一句:
procedure TForm1.FormCreate(Sender: TObject);
begin
screen.Cursors[crDefault]:=LoadCursorFromFile('I:/resource/ani/mOTS_POI.ANI');
screen.Cursor:=screen.Cursors[crdefault];
end;
 
只有用SetSysteCursor()来设置了。在你的程序退出的时候,Restore即可。
设置:
h:=loadcursorfromfile('c:/windows/desktop/hand.cur');
setsystemcursor(h,ocr_normal);
恢复:
SystemParametersinfo(SPI_SETCURSORS,0,nil,SPIF_SENDCHANGE);
 
to Kingron:
没办法只修改自己程序中的Default光标吗?
 
To SoftDog:
据我所知,没有!你自己用Delphi的集成环境设置就知道了,在菜单中也是
不能改变鼠标的形状的。
 
接受答案了.
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
后退
顶部