资源文件在DELPHI中的使用

溫宇

溫宇

2016-01-29 14:03

资源文件在DELPHI中的使用,资源文件在DELPHI中的使用
 
资源是存放在扩展名.RES的文件里的二进制数据结构,在DELPHI中资源文件可以使用图象编辑器来制作(IMAGEEDITOR),或者使用其他的工具。如:BORLAND公司提供的RADPACKFORDELPHI中的RESOURCEWORKSHOP来创建。资源文件中通常存放的是应用程序可以随时存取的一些对象,包括:ICON、CURSOR、BITMAP、FONT等近十种。大部分的资源在通常的情况下可以保留在磁盘当中,直到程序需要使用它们时才将其调入,可以大大的节省内存资源,同样,资源文件也是可以共享的,即:多个程序可以共享一个资源文件,进而减少了在应用程序之间代码重复的现象,使程序的代码得到很大的优化,因此在应用程序中使用资源文件有独立制作、方便、随时修改而不需要对应用程序代码做任何修改的好处。

一般来说,一个应用程序的所有资源都存放在一个RES文件里,然后在DELPHI进行编译的阶段将资源文件的内容与最终的EXE文件合并在一起,因此编译后的RES文件并没有什么作用,仅仅提供用来查阅使用,在分发应用时不必把RES文件分发给最终用户。当然,不同的资源可以分别放在不同的资源文件当中,而且资源文件越小调入内存的速度越快。在这里还要说明的一点是:在修改了原来的资源文件之后,在原来编译的EXE文件中加入的资源不会随之而更新,只有在重新进行编译以后,才能将新的资源加入到新的EXE文件当中去。

下面我们通过两个例子来说明在DELPHI中如何使用资源文件(在这里我们不讲述资源文件的制作方法)。

一、如何在DELPHI中使用定制的光标。
在使用DELPHI进行编程时,有一个很重要的对象──TSCREEN,它是用来管理和操纵运行时期屏幕的不可视构件。它的CURSOR属性是用来指定各个不同的构件光标形状,声名为:

PROPERTYCURSORS[INDEX:INTEGER]:HCURSOR;
这个只读的特性返回应用程序支持的光标组成的一个HCURSOR类型的数组,它存储了屏幕上所有的鼠标光标的身份代码(HCURSOR就是光标的HANDLE句柄),数组下标从0开始,在DELPHI预定义了一些代表不同光标的常量,它的值是从0到-17,您可以直接指定程序使用的光标。如:

FORM1.CURSOR:=-3表示FORM1采用的光标是CRCROSS(十字)。

大家可能都会发现构件的CURSOR的属性最多提供十八种常用的CURSOR值,这在很多的情况下是不够的,如:当光标进入一个PANEL面板时光标的形状为一只手,那么PANEL的CURSOR就不能满足这种要求,这时就需要我们自定义一个手的光标并将其赋给PANEL的CURSOR属性。如何实现则可以按以下步骤进行:

使用资源文件编辑器(IMAGEEDITOR或者RESOURCEWORKSHOP)编写资源文件。
定义一个光标常量,注意这个常量不能与DELPHI中提供的光标常量相冲突。
在FORMCREATE事件中使用WINDOWSAPI当中的LOADCURSOR函数来载入自定义的CURSOR。
在程序中将自定义的CURSOR分配给PANEL的CURSOR属性。
下面说明如何将自定义的一只手的鼠标光标赋给PANEL1的CURSOR属性。首先使用IMAGEEDITOR建立一个HAND.RES的文件。之后按如下书写程序代码:

implementation
{$R*.DFM}
const
Crhand=2;

procedure TForm1.FormCreate(Sender:TObject);
begin
screen.cursors[crhand]:=loadcursor(Hinstance,'hand');
panel1.cursor:=crhand;
end;

除了编写上面的代码以外,我们还需要做的一项工作是将资源文件加入到项目文件当中去,编译指令中的{$Rfilename}伪指令让我们来增加资源文件,让我们来看一看项目文件的代码。

program PCUR;
uses
Forms,
HANDin'HAND.pas'{Form1};

{$R*.RES}//这里的*意义为在程序编译以后会产生一个与项目文件同名的资源文件,在这里为PCUR.RES文件,这部分是自动产生的。

{$Rhand.res}//这部分是我们自己加入的自定义资源文件,这两个资源文件(HAND.RES和//PCUR.RES中的资源都会附加在可执行文件PCUR.EXE的后面。

begin
Application.Initialize;
Application.CreateForm(TForm1,Form1);
Application.Run;
end.

二、资源文件在编写动画程序中的应用
上面的例子使用的是在资源文件中存储的CURSOR资源,在下面的例子中我们将使用的是在资源文件中提供的ICON资源来编写一个小小的动画程序。在这里动画的产生是利用定时器在一定的时间间隔内产生TIMER事件将存储在资源文件中的ICON依次的绘制在FORM的同一处而产生的。这时要用到画布CANVAS的DRAW方法,其声明如下:

procedure Draw(X,Y:Integer;Graphic:TGraphic);

在这个方法当中的参数GRAPHIC可以为:BITMAPS、ICONS、METAFILES。具体的实现方法为:建立DEMO.RES文件,其中含有名为ICON1—ICON6的ICON。并将DEMO.RES加到项目原代码中去(如:上面例子的方法)。

动画程序的具体代码如下:

unit donghua;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls;

type
TForm1=class(TForm)
Image1:TImage;
Timer1:TTimer;
procedure FormCreate(S
展开更多 50%)
分享

猜你喜欢

资源文件在DELPHI中的使用

Delphi
资源文件在DELPHI中的使用

Delphi中使用资源文件

编程语言 网络编程
Delphi中使用资源文件

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

播放资源文件文件中的声音

编程语言 网络编程
播放资源文件文件中的声音

在VC资源文件中加入声音资源

C语言教程 C语言函数
在VC资源文件中加入声音资源

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何在Applet中引用jar中的资源文件

编程语言 网络编程
如何在Applet中引用jar中的资源文件

vc在应用程序中播放声音资源文件

编程语言 网络编程
vc在应用程序中播放声音资源文件

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《勇气默示录2》职业组合推荐及中后期练级攻略

《勇气默示录2》职业组合推荐及中后期练级攻略

字符串分割扩展 SplitEx

字符串分割扩展 SplitEx
下拉加载更多内容 ↓