DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 18738357139
今日帖子: 51
在线用户: 24
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 delphichild (2046) ★☆☆☆☆ -
普通会员
2004/3/30 13:17:17
标题:
delphi中调用资源文件,请赐教 浏览:1616
加入我的收藏
楼主: 1.在开始创建文本文件时需要以下格式
  资源标识符+关键字+资源文件名
请问什么是'资源标识符'请各位提供例子给小弟,最好是图标文件.
2.请回答我上一贴有关pagecontrol的问题.  多谢!
----------------------------------------------
人人为我!!!!
我为人人!!!!
作者:
男 hbqckzj (醉里寻欢) ★☆☆☆☆ -
盒子活跃会员
2004/3/30 14:42:31
1楼: 将资源文件并入程序中,需要加上如下格式的代码:

implementation

{$R *.dfm}
{$R myres.res}   //myres.res是资源文件名,你可以自行更改
----------------------------------------------
秋风清 秋月明,几上闲琴黯生尘。
夜来忽忆少年事,陌上柳绿草青青。
相逢一笑言未语,携手相看自倾心。
二十二载云烟里,云含风韵烟含情。
风尘渺落风霜浸,但闻长空雁长鸣。
姿容如花颜如玉,只在平生梦里寻。
秋风清 秋月明,秋灯秋雨愁煞人。
天涯路远人何在,午夜梦回空扰惊。
作者:
男 delphichild (2046) ★☆☆☆☆ -
普通会员
2004/3/30 15:46:00
2楼: 那么如何创建资源文件?
----------------------------------------------
人人为我!!!!
我为人人!!!!
作者:
男 hbqckzj (醉里寻欢) ★☆☆☆☆ -
盒子活跃会员
2004/3/30 15:57:10
3楼: 用delphi自带的Image Editor,将就将就!
----------------------------------------------
秋风清 秋月明,几上闲琴黯生尘。
夜来忽忆少年事,陌上柳绿草青青。
相逢一笑言未语,携手相看自倾心。
二十二载云烟里,云含风韵烟含情。
风尘渺落风霜浸,但闻长空雁长鸣。
姿容如花颜如玉,只在平生梦里寻。
秋风清 秋月明,秋灯秋雨愁煞人。
天涯路远人何在,午夜梦回空扰惊。
作者:
男 waterstone (waterstone) ★☆☆☆☆ -
盒子活跃会员
2004/3/30 18:17:33
4楼: Dephi5中资源文件的创建和使用
几乎每个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控件中。
Image1.Picture.Bitmap.Handle :=LoadBitmap(hInstance,'资源标识符');
注:如果位图没有装载成功,程序仍旧执行,但是Image将不再显示图片。你可以根据LoadBitmap函数的返回值判断是否装载成功,如果装载成功返回值是非0,如果装载失败返回值是0。
另外一个存取显示位图的方法如下
Image1.Picture.Bitmap.LoadFromResourceName(hInstance,'资源标识符');
 (2)存取资源文件中的光标
Screen.Cursors[]是一个光标数组,使用光标文件我们可以将定制的光标加入到这个属性中。因为默认的光标在数组中索引值是0,所以除非想取代默认光标,最好将定制的光标索引值设为1。
begin
Screen.Cursors[1] :=LoadCursor(hInstance,'资源标识符');
Image1.Cursor :=1;
end;
(3)存取资源文件中的图标
将图标放在资源文件中,可以实现动态改变应用程序图标。
begin
Application.Icon.Handle := LoadIcon(hInstance,'资源标识符');
End;
(4)存取资源文件中的AVI
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编译工程会自动创建一个和工程名相同的资源文件(如果没有其他的资源,主窗口的图标会放在这个资源文件中)。但是建议最好不要改变这个资源文件。


----------------------------------------------
我来自农村广阔的田野我的每一个动作都很夸张http://waterstone.51r.com
作者:
男 mtxz (毛头小子) ★☆☆☆☆ -
普通会员
2004/5/4 11:56:24
5楼: 谢谢了,如果是任意格式的文件,需要将文件读出来的话,则这样:
  FStream := TResourceStream.Create(Hinstance, 'MyWav', 'Wav');
  FStream.SaveToFile('MyWav.Wav');

----------------------------------------------
-
作者:
男 sephil (NAILY Soft) ★☆☆☆☆ -
盒子中级会员
2004/5/4 16:15:21
6楼: 资源标识符+关键字+资源文件名
~~~~~~~~~~
你自己定义的名字啦,随便你怎么取

Test.rc
MyResName RC_DATA file.txt


with TResourceStream.Create(HInstance, 'MyResName', 'RC_DATA') do
try
  SaveToFile('a.txt');
finally
  Free;
end;
----------------------------------------------
Copyright 2008 ? NAILY Soft

Click here to redirect to my home
Click here to redirect to my blog
作者:
男 youngth (风云) ★☆☆☆☆ -
盒子活跃会员
2004/5/4 16:46:54
7楼: 顶,简直是太好了,偶等了好久,终于有人解答了~~

不胜感激!!
----------------------------------------------
愿生命不再飘零----
愿岁月的季节不再枯竭---
作者:
男 willing (willing) ★☆☆☆☆ -
禁用账号
2004/5/4 17:37:28
8楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
按此在新窗口浏览图片
作者:
男 willing (willing) ★☆☆☆☆ -
禁用账号
2004/5/4 17:51:14
9楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
按此在新窗口浏览图片
作者:
男 sephil (NAILY Soft) ★☆☆☆☆ -
盒子中级会员
2004/5/4 18:24:24
10楼: 你是Compile的吧
Build一下就知道了
----------------------------------------------
Copyright 2008 ? NAILY Soft

Click here to redirect to my home
Click here to redirect to my blog
作者:
男 willing (willing) ★☆☆☆☆ -
禁用账号
2004/5/4 18:34:39
11楼: ……
被禁用帐号,帖子内容自动屏蔽!
……
此帖子包含附件:
JPEG 图像
大小:51.7K
----------------------------------------------
按此在新窗口浏览图片
作者:
男 sephil (NAILY Soft) ★☆☆☆☆ -
盒子中级会员
2004/5/4 19:01:48
12楼: 删除掉rc同名的res文件然后Build

----------------------------------------------
Copyright 2008 ? NAILY Soft

Click here to redirect to my home
Click here to redirect to my blog
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行82.03125毫秒 RSS