网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi中资源文件的创建和使用
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
几乎每个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 :=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编译工程会自动创建一个和工程名相同的资源文件(如果没有其他的资源,主窗口的图标会放在这个资源文件中)。但是建议最好不要改变这个资源文件。

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号