在Delphi中编辑res文件
先用记事本编写一个rc的文件。如内容为:
_Comms RCData Comms.jpg
Comms.jpg为图片名称,
然后在这个rc文件和图片拷贝到delphi安装路径的bin文件夹里面,
选中这两个文件,拉到“brc32.exe”文件上面,就会生产一个res格式的文件出来。
文件名称为跟rc文件的名称一样。
1.创建资源文件
首先创建一个.Rc的纯文本文件。格式如下:
资源标识符 + 关键字 + 资源文件名
(1) 资源标识符:程序中调用资源时的特殊标号;
(2) 关键字:标识资源文件类型;
Wave: 资源文件是声音文件;
RCDATA: JPEG文件;
AVI: AVI动画;
ICON: 图标文件;
BITMAP: 位图文件;
CURSOR: 光标文件;
资源文件名:资源文件名;
(3) 资源文件名:编译的资源文件,比如动画、位图、光标等;
(4) 如:MyWav WAVE FileName.Wav
使用Borland资源编译器(BRCC32.EXE)转化.Rc文件成.Res文件。在DOS命令行下输入下列命令:
Brcc32 FileName.Rc // Brcc32.Exe在Delphi5/Bin文件下。
2.在工程中引用资源文件
为了存取我们的资源文件,必须告诉Delphi链接我们的资源文件到应用程序中。因此我们可以在源代码中加入一条编译指令完成上述功能。这条指令必须紧跟在窗口指令后,如下形式:
{$R *.DFM} file://Delphi自带编译指令
{$R FileName.Res} file://新加入的编译资源文件的指令。
不要删除{$R *.DFM}指令,因为这行代码告诉Delphi链接下面的资源到窗口的资源中。
3.调用资源文件
(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 ; file://资源标识
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;
楼主兄弟,希望上面的东东能对你有所帮助。
谈资源文件在Delphi中的应用
鲸鱼工作室 陈经韬
http://lovejingtao.126.com
资源文件一般为扩展名为res的文件。在VC中资源文件用得非常普遍,
但Delphi在其联机帮助中对资源文件没作什么介绍,其实利用其自带的
资源编译工具BRCC32.EXE(一般位于/Delphi/BIN目录下),我们完全可
以做出跟VC一样效果的文件来。
资源文件最大的好处是能将一些在必要时才调用的文件跟可执行文件一
起编译,生成一个文件.这样做最大的好处就是使外部文件免遭破坏.例如
在一条程序中你要临时调用一幅图片,一般作法是把图片放在某一路径下
(通常是主程序所在路径),但如果用户路径误删你的图片文件,则可能
使程序找不到相应文件而出错崩溃。另外,如果你想自己的程序界面美观,
想用一些自定义光标,也要用到资源文件。
资源文件的使用步骤为:
1.编写rc脚本文本
用记事本或其它文本编辑器编写一个扩展名为rc的文件。例如:
mycur cursor move.cur //加入光标
mypic Bitmap Water.BMP //加入位图
mywav WAVE happy.wav //加入声音
myAVI AVI EPOEN.AVI //加入视频
myIco ICON CJT.ICO //加入图标
格式分别为在资源文件中的名称->类型->实际文件名称,例如上面
第一行 定义一个名为mycur的光标,实际名称为加入光标move.cur.
2.将rc文件编译成res资源文件
将脚本文件和实际文件拷到Brcc32.EXE所在目录,执行DOS命令。
格式为:Brcc32 脚本文件(回车),例如有一名为myfirst.rc的脚本文件,
则执行 Brcc32 myfirst.rc(回车)即可。如果你是懒人,也可新建一批
处理文件,内容 只有一行:Brcc32 mufist.rc.(因为Delphi安装后一般会
在自动批处理文件中指明搜索路径的。)如果编译成功,则会生成一个结尾
为res的文件,这个 文件就是我们需要的资源文件。
3.在Delphi单元中加入资源文件
将生成的res资源文件拷贝到你所编程序的路径下,在单元文件
{$R *DFM}后加上一句{$R mufirst.res},则将res文件加入去,编译后资
源文件即已包含在可执行文件中了。若你有多个资源文件,也按上法依次
加入。
4.在Delphi程序中调用资源文件
资源文件在Delphi中的关键字为hinstance.下面给出具体用法
<1>光标的调用
首先在程序中定义一个值大于0的常量,因为Delphi本身用0-负
16来索引 默认的光标,所以我们制定的光标应从表面上1开始索引。然后
在窗口的Oncreat事件中添加以下代码:
screen.cursor[35]:Load cursor (hinstance,'mycur');
其中35为大于1的常量,mycur为光标在资源文件中的名字。如
果希望在 其他控件上使用定制光标,例如Panel控件,只需在程序的适当
处加入以下代码:
Panel1.cursor:=35;
<2>位图的调用
新建一项工程,添加一Timage控件,在需要显示的地方写以下代码:
Var mymap:Hbitmap;
begin
hmymap:=LoadBitmap(hinstance,'mypic');
Image1.picture.Bitmap.Handle:=mymap;
end;
其中"mypic"为位图资源文件中的名称。
〈3〉AVI文件的调用
新建一工程,添加一Animate控件,在需要的地方加入:
animater1.resname:='myAVI';
animater1.Active:=true;
其中myAVI为视频文件在资源文件中的名称。
〈4〉调用WAV文件
在uses中加入mmsystm单元,以便在程序中播放WAV文件。播放时Playsound
(pchar('mywav'),hinstance,sndsync or snd_resource);其中mywav为声音
文件在资源中的名称。
〈5〉加入光标
加入光标比较容易,只要将res文件加入单元文件中即可。但需注意,名称
最好取"W"."WW"等,使第一个字母尽量靠后,以免与主程序的图标顺序颠倒。
补充:1.资源类型除上述类型外,还可以字体文件,字符串文件等。
2.资源文件不但可以在标准图形界面下使用还可在控制台下使用。
下面我们来试验一下:
新建一工程,将唯一的一个Form删除,然后修改工程文件。增加一句
{$Apptype console},在uses子句中加入mmsystem,并将其它引用单元
删掉。将Begin和end之间语句删掉。至此,我们就可和Turbo PASCAL
下编程序一样,且还可以调用windows的API和资源。将资源文件----
{$R myfist.res}加入。在Begin和end之间写下:
writeln('演示程序,按任意键开始!');
readln;
playsound(pchar('mywav'),hinstance,snd_sync or snd_resource);
writeln('演示结束!');
运行程序,将弹出一个标准DOS窗口,按任意键播放声音文件。是不是很COOL呢!
我曾下载过一个播放器,在其安装目录下我发现有一"DOS程序",用鼠标双击它
便弹出一个DOS窗口,显示DOS时代特有的画图,并有背景音乐!可能就是用这个
方法做的。
编辑JPG.RC文件
jpg1 jpeg 1.jpg
jpg2 jpeg 2.jpg
用BRCC32 JPG.RC
在程序中用
{$r jpg.res}
var
JPg:Tresourcestream;
begin
jpg:=Tresourcestream.create(hinstance,'jpg1','jpeg');
image1.picture.assign(Jpg);
JPg.free;
end;
http://blog.csdn.net/zisongjia/article/details/61915116
在Delphi中编辑res文件的更多相关文章
- 在Delphi中编写res文件
delphiimagedosinterfaceborland脚本先用记事本编写一个rc的文件. 如内容为: _Comms RCData Comms.jpg Comms.jpg为图片名称, 然后在这个r ...
- eclipse中编辑properties文件无法看到中文
如果在eclipse中编辑properties文件无法看到中文则参考“Eclipse开发环境配置-indigo.docx”添加propedit插件.
- delphi中如何实现文件的复制?
http://zhidao.baidu.com/link?url=nyAzCpeXAbaT8M3qqAePCF1Zr7q-oK4hpAUNIaRYpHcbmIwYsLr1TXoTt8759HtR1EB ...
- delphi中的各种文件类型介绍【转】
1.DPR: Delphi Project文件,包含了Pascal代码.应用系统的工程文件2.PAS: Pascal文件,Pascal单元的源代码,可以是与窗体有关的单元或是独立的单元.3.DFM:D ...
- delphi中的各种文件类型介绍
1.DPR: Delphi Project文件,包含了Pascal代码.应用系统的工程文件2.PAS: Pascal文件,Pascal单元的源代码,可以是与窗体有关的单元或是独立的单元.3.DFM:D ...
- Delphi中编辑word
其他(28) //启动Word try wordapplication1.connect; except messagedlg('word may not be ins ...
- 解决Eclipse中编辑xml文件的智能提示问题,最简单的是第二种方法。
Eclipse for Android xml 文件代码自动提示功能,介绍Eclipse 编辑器中实现xml 文件代码自动智能提示功能,解决eclipse 代码提示失效.eclipse 不能自动提示. ...
- [转]解决Eclipse中编辑xml文件的智能提示问题
转自:http://hi.baidu.com/cghroom/item/48fd2d0dc1fc23c675cd3c3e 摘要: Eclipse for Android xml 文件代码自动提示功能 ...
- 未联网下,在eclipse中编辑xml文件如何自动提示设置
断网情况下,用eclipse编辑xml文件如何自动提示? 以编辑hibernate中的xml为例: 首先,我们都知道xml提示是引用.dtd文件的. 1.复制这个dtd路径,设置eclipse属性,搜 ...
随机推荐
- boost1.59编译安装(可以完全安装,也可定制安装--buildtype=complete,link=static)
1.下载: 网址:http://sourceforge.net/projects/boost/files/boost/1.59.0/ 选择:boost_1_59_0.7z或者boost_1_59_0. ...
- radio实现第一次点击选中第二次点击取消
Jquery代码如下: $("#add_form .radio input").bind("click",function(){ var $radio = $( ...
- Quartz 入门详解 专题
Cron-Expressions are used to configure instances of CronTrigger. Cron-Expressions are strings that a ...
- 关于Dagger 2的文章汇总
首先是我真正看懂了的第一篇文章 代码GG之家的 Dagger2图文详解 这篇文章很直接,还配有代码demo.至少我是看懂了. Dagger2 使用详解 这篇文章同样配有demo,同时文末还有很多有用的 ...
- httpclient htmlunit下载单个文件
httpclient public class Download { public static void main(String[] args) throws ClientProtocolExcep ...
- Windows下快速搭建安卓开发环境android-studio
Windows下快速搭建安卓开发环境android-studio 发布时间:2018-01-18 来源:网络 上传者:用户 关键字: 安卓 搭建 Android Windows 快速 环境 Studi ...
- 在navicat上设置定时计划执行存储过程
原文 应用情景: 有一个存储过程,需要每天定时执行一次.所以在navicat上使用事件处理,当然还有其他的方法,这只是一种.作为参考 1.事件定义填写 2.事件计划设置 3.保存 点击上方保存即可 常 ...
- Struts2——(6)表单校验
一.表单校验 js,jquery是客户端校验,今天要说的是客户端校验. 禁止js,或者机器代码会破坏客户端校验,所以客户端校验相对不安全. 服务器端校验是基于java代码在服务器端进行校验,特点是相应 ...
- poj 3071 可能DP
http://poj.org/problem? id=3071 推方程不难,可是难在怎么算 dp[i][j]表示第i场时第j仅仅队伍存活下来的概率 方程:dp[i][j]=sigma(dp[i-1][ ...
- 科学的解决Http Token拦截器TokenInterceptor实现
1.写在前面 在做项目的时候,有时对接口要求比较严谨.先介绍下情况. 我这边Http 方式采用的是 OKhttp+Retrofit 后台一共分为三种token,分别是实名token(accessTok ...