Delphi资源文件


======================================================
注:本文源代码点此下载
======================================================

几乎每个windows应用程序都使用图标、图片、光标等资源。资源是程序的一部分,但是它是不可执行代码。下面我们就详细介绍资

源文件在delphi5中建立和使用方法。

1.把资源放到exe文件的优点

由于定位资源比在磁盘中定位文件花费时间少,所以应用程序执行会更快。多种资源可以放在一个文件中,减少了图标、图片、光标

等文件数量。保存资源文件时不要和工程名相同,因为delphi创建工程时会自动创建一个和工程名相同的资源文件。并且最好将资源

文件保存到和工程文件同一个文件夹中。

2.创建资源文件

首先创建一个.rc的纯文本文件。格式如下:

资源标识符 + 关键字 + 资源文件名

① 资源标识符:程序中调用资源时的特殊标号;

② 关键字:标识资源文件类型;

wave: 资源文件是声音文件;

rcdata: jpeg文件;

avi: avi动画;

icon: 图标文件;

bitmap: 位图文件;

cursor: 光标文件;

资源文件名:资源文件名;

③ 资源文件名:编译的资源文件,比如动画、位图、光标等;

④ 如:mywav wave "filename.wav"

使用borland资源编译器(brcc32.exe)转化.rc文件成.res文件。在dos命令行下输入下列命令:

brcc32 filename.rc // brcc32.exe在delphi5\bin文件下。

3.在工程中引用资源文件

为了存取我们的资源文件,必须告诉delphi链接我们的资源文件到应用程序中。因此我们可以在源代码中加入一条编译指令完成上述

功能。这条指令必须紧跟在窗口指令后,如下形式:

{$r *.dfm} //delphi自带编译指令

{$r filename.res} //新加入的编译资源文件的指令。

不要删除{$r *.dfm}指令,因为这行代码告诉delphi链接下面的资源到窗口的资源中。

4.调用资源文件

(1)存取资源文件中的位图(bitmap)

程序中如果想存取资源,你必须调用一些windows api函数。保存在资源文件中的位图、光标和图标可以通过调用loadbitmap、

loadcursor和loadicon函数存取。

本例举例说明如何存取资源文件中位图并显示在timage控件中。

procedure tfrmain.btncanvaspic(sender: tobject);

image1.picture.bitmap.handle :=loadbitmap(hinstance, '资源标识符');

end;

注:如果位图没有装载成功,程序仍旧执行,但是image将不再显示图片。你可以根据loadbitmap函数的返回值判断是否装载成功,

如果装载成功返回值是非0,如果装载失败返回值是0。

另外一个存取显示位图的方法如下

procedure tfrmain.btnloadpicclick(sender: tobject);

begin

image1.picture.bitmap.loadfromresourcename(hinstance, '资源标识符');

end;

(2)存取资源文件中的光标

screen.cursors[]是一个光标数组,使用光标文件我们可以将定制的光标加入到这个属性中。因为默认的光标在数组中索引值是0,

所以除非想取代默认光标,最好将定制的光标索引值设为1。

procedure tfrmain.btnusecursorclick(sender: tobject);

begin

screen.cursors[1] :=loadcursor(hinstance,'资源标识符');

image1.cursor :=1;

end;

(3)存取资源文件中的图标

将图标放在资源文件中,可以实现动态改变应用程序图标。

procedure tfrmain.loadiconclick(sender: tobject);

begin

application.icon.handle := loadicon(hinstance, '资源标识符');

end;

(4)存取资源文件中的avi

procedure tfrmain.loadiconclick(sender: tobject);

begin

animate1.resname :='myavi' ; //资源标识

animate1.active :=true ;

end ;

(5)存取资源文件中的jpeg

把jpeg单元加入到interface的uses单元中。

procedure tform1.loadjpgclick(sender: tobject);

var

fjpg : tjpegimage ;

fstream :tresourcestream ;

begin

fjpg :=tjpegimage.create ;

fstream := tresourcestream.create (hinstance,'资源标识符',rt_rcdata) ;

fjpg.loadfromstream (fstream) ;

image1.picture.bitmap.assign (fjpg);

end;

(6)存取资源文件中的wave

把mmsystem加入到interface的uses单元中

procedure tform1.loadwaveclick(sender: tobject);

begin

playsound('mywav', hinstance, snd_async or snd_memory or snd_resource) ;

end;

5.结束语

位图、光标和图标、avi动画、jpeg和wave文件等可以放到资源文件中,上面我们介绍了如何将资源加入到资源文件中,并介绍

了在delphi中动态存取资源文件的方法。delphi编译工程会自动创建一个和工程名相同的资源文件(如果没有其他的资源,主窗口的

图标会放在这个资源文件中)。但是建议最好不要改变这个资源文件。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值