资源描述:
《学习使用资源文件(delphi版本)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、学习使用资源文件[1]-入门资源文件(*.res)通过编译指令$R关联,譬如工程文件Project1中的{$R*.res}就是关联Project1.res资源文件,我们直接写作{$RProject1.res}不会有问题(但如果工程文件改名时,你也得随着改才行).譬如:programProject1;usesForms,Unit1in'Unit1.pas'{Form1};{$RProject1.res}beginApplication.Initialize;Application.MainFormOnTa
2、skbar:=True;Application.CreateForm(TForm1,Form1);Application.Run;end.这个资源文件中至少包含着文件图标,假如我们删除{$R*.res}后编译,看前后对比图:这时我们可以通过代码,调用其他图标:procedureTForm1.FormCreate(Sender:TObject);beginApplication.Icon.LoadFromFile('c:tempmy.ico');end;这样还是不好,如果运行程序的电脑没有这个文件呢?
3、最好让程序携带着它,这就要通过资源文件.让我们从头来过:1、新建一个VCLFormsApplication;并SaveAll;2、并通过菜单Project→ViewSouse打开工程源文件;3、删除{$R*.res}4、如图新建一个Text文件5、文件编辑如下:MainIconICON"c:tempmy.ico"注意:其中的c:tempmy.ico可以随便定义,但文件必须存在;另外其中的所有大小写无关,路径两边的双引号也可以省略.6、把它保存为:Project1.rc;注意要保存在程序相同目录,
4、文件名和工程文件名相同,后缀是rc7、如图把Project1.rc添加到工程组:8、这时工程文件自动添加了一行:{$R'Project1.res''Project1.rc'}9、好了,编译执行程序,如图:注释:1、*.rc文件算是资源文件(*.res)的源文件,在程序编译过程中会编译成同名的res文件;2、上面的例子是个特例,一般我们不能使用和工程同名的资源文件;3、MainIconICON"c:tempmy.ico"中的ICON说明这是一个图标资源,MainIcon是该资源的标识符,这个标识符应该
5、是可以自定义的,不过在这个特例中,只能使用MainIcon,因为程序要从同名的资源文件中查找标识为MainIcon的资源做图标.学习使用资源文件[2]-Ico现在要做一个携带两个图标的资源文件,并调用的例子.1、首先建新工程,保存,注意这次我们不删除{$R*.res}2、复制两个ico文件到工程目录,譬如文件是:IcoFile_1.ico、IcoFile_2.ico3、建立文本文件输入:ico1ICONIcoFile_1.icoico2ICONIcoFile_2.ico然后保存为:MyRes.rc,并A
6、dd到工程中,如图:4、此时的工程文件会自动插入:{$R'MyRes.res''MyRes.rc'}5、添加四个按钮,实现代码如下:unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;typeTForm1=class(TForm)Button1:TButton;Button2:TButton;Button3:TButton;Button4:TB
7、utton;procedureButton1Click(Sender:TObject);procedureButton2Click(Sender:TObject);procedureButton3Click(Sender:TObject);procedureButton4Click(Sender:TObject);end;varForm1:TForm1;implementation{$R*.dfm}//使用资源中的第一个自定义图标procedureTForm1.Button1Click(Sender:T
8、Object);beginApplication.Icon.Handle:=LoadIcon(HInstance,'ico1');{HInstance当前程序实例的句柄,调用资源文件一定要用到它;ico1是资源文件的标识符;LoadIcon是个API函数,专门用于调用资源中的ico文件,它返回的是指定ico文件的句柄.}end;//使用资源中的第二个自定义图标procedureTForm1.Button2Click(Sender:TObje