让彩色光标出现在Delphi程序中

Delphi教程 2025-08-10

在Delphi中用Loadcursor()得到的光标只有黑白两色,怎样在程序中得到彩色光标呢?笔者尝试制作了以下程序:

 方法一 用Loadcursorfromfile()从外部调入图标作为光标

 Loadcursorfromfile()函数可以读*CUR,*ICO,*ANI为后缀的文件作为光标,其中ICO为彩色图标格式(可用Image Editor制作),ANI为动画光标格式。以下为打开一图标作为光标的演示程序段,当光标移动到测试区域内光标会变成选定的图案;

 {设:opendialog1:Topendialog;Bitbtn1:Tbitbtn}

 PRocedure TForm1.BitBtn1Click(Sender:TObject);

 var tt:pchar;size:integer;s:string;

 begin

 if opendialog1.Execute then

 begin

 size:=length(opendialog1.filename);

 getmem(tt,size);

 s:=opendialog1.filename;

 strpcopy(tt,s);

 screen.cursors[2]:=loadcursorfromfile(tt);

 bf.cursor:=2;

 freemem(tt,size);

 end;

 end;

 方法二 从资源文件加载彩色光标

 用方法一发送程序时必须包含*CUR文件,因而从资源文件中加载彩色光标是更可行的方法。用图标存放彩色光标,使用时把图标存入临时文件,用Loadcursorfromfile()从临时文件读出彩色光标。

 程序段:

 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;

 此程序把名字为name的图标变为序号为screenindex的光标;

 例:

 ZloadfromResourse(2,′myicon′);

 Form1.cursor:=2;