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

王朝delphi·作者佚名  2006-01-08
宽屏版  字体: |||超大  

在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;

.ls{font-size:9pt; text-decoration:none}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有