Delphi 7资源文件的使用

    在Delphi 7下没有VC下方便的RES资源编辑器,有一个Image Editor,但是功能有限,且支持的格式少。除了可以借用VC的资源编辑器和其他工具,我们还可以手动制作资源文件。
    每一个Delphi工程下,都有一个.res资源文件,这是保存应用程序图标等资源的文件。在工程项目文件里都有包含一个编译指令,可以在“Project”→“View Source”下查看。如下所示:

01
02
03
04
05
06
07
08
09
10
11
12
13
program Project1; 
 
uses 
  Forms, 
  Unit1 in 'Unit1.pas' {Form1}
 
{$R *.res}   {代表程序编译后,会产生一个与工程同名的资源文件} 
 
begin 
  Application.Initialize; 
  Application.CreateForm(TForm1, Form1); 
  Application.Run; 
end

     要制作自己的资源文件,得先制作.rc文件,因为.rc文件是资源的源文件。首先,在工程目录下新建一个专门放资源文件的文件夹,取名为“res”,再将图片、光标等资源放进此文件夹。然后,再新建一个文本文件,改名为“MyPicture.rc”,假设我们要制作一张图片的资源文件(预先准备一张图片),那么在此文件中,输入以下内容:

1
myPic Bitmap "res//thePicture.bmp" 

内容每列所代表的意思分别是:资源名称、资源类型、资源文件位置。接着,打开Delphi工程,点击“Project”→“Add to project...”,在弹出的选择文件对话框中,文件类型选择“Resource file (*.rc)”,然后选中刚才制作的“MyPicture.rc”文件,如下图所示:

再看工程的项目文件,会发现自动增加了一行代码,如下所示:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
program Project1; 
 
{$R 'MyPicture.res' 'MyPicture.rc'} 
 
uses 
  Forms, 
  Unit1 in 'Unit1.pas' {Form1}
 
{$R *.res} 
 
begin 
  Application.Initialize; 
  Application.CreateForm(TForm1, Form1); 
  Application.Run; 
end

所增加的那一行,表示在程序编译时,会自动将'MyPicture.rc'文件编译成'MyPicture.res'资源文件。接下去,我们试着在工程中调用资源文件。在窗体上放置一个Image控件,在窗体单元文件写入以下代码:

1
2
3
4
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  img1.Picture.Bitmap.Handle := LoadBitmap(HInstance,'myPic'); 
end

编译后,在工程目录下多了‘MyPicture.res’文件。运行程序,效果如下图所示:

在Delphi 7下不需要使用brcc32.exe编译.rc文件成.res文件,直接将.rc加入工程即可。资源文件的类型除了位图,还可以是光标、声音、图标等等,并且支持自定义类型。对于普通资源文件的加载可以使用API函数:

1
2
3
4
5
6
7
LoadAccelerators;  
LoadBitmap; 
LoadCursor;  
LoadIcon; 
LoadImage; 
LoadMenu;  
LoadString; 

对于其他类型的文件,比如jpg文件,可以使用流文件方式进行加载资源,如下所示:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
uses jpeg; 
 
{$R *.dfm} 
 
procedure TForm1.FormCreate(Sender: TObject); 
var 
  resStream: TResourceStream; 
  jpgPic: TJPEGImage; 
begin 
  resStream := TResourceStream.Create(HInstance,'myPic2','jpeg'); 
  jpgPic := TJPEGImage.Create; 
  try 
    jpgPic.LoadFromStream(resStream); 
    img1.Picture.Assign(jpgPic); 
  finally 
    jpgPic.Free; 
    resStream.Free; 
  end
end

参考资料:
1.http://hi.baidu.com/%D1%AA%BA%A3%B5%FB%D2%C2/blog/item/08f670c857925f137f3e6f32.html

  • 1
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论

打赏作者

无幻

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值