资源文件(*res)通过编译指令 $R 关联 譬如工程文件 Project 中的 {$R *res} 就是关联 Projectres 资源文件 我们直接写作 {$R Projectres} 不会有问题(但如果工程文件改名时 你也得随着改才行) 譬如
programProject;
uses
Forms
UnitinUnitpas{Form};
{$RProjectres}
begin
ApplicationInitialize;
ApplicationMainFormOnTaskbar:=True;
ApplicationCreateForm(TFormForm);
ApplicationRun;
end
这个资源文件中至少包含着文件图标 假如我们删除 {$R *res} 后编译 看前后对比图
这时我们可以通过代码 调用其他图标
procedureTFormFormCreate(Sender:TObject);
begin
ApplicationIconLoadFromFile(c:tempmyico);
end;
这样还是不好 如果运行程序的电脑没有这个文件呢? 最好让程序携带着它 这就要通过资源文件 让我们从头来过
新建一个 VCL Forms Application 并 Save All
并通过菜单 Project → View Souse 打开工程源文件
删除 {$R *res}
如图新建一个 Text 文件
文件编辑如下
MainIcon ICON ctempmyico
注意 其中的 ctempmyico 可以随便定义 但文件必须存在 另外其中的所有大小写无关 路径两边的双引号也可以省略
把它保存为 Projectrc 注意要保存在程序相同目录 文件名和工程文件名相同 后缀是 rc
如图把 Projectrc 添加到工程组
这时工程文件自动添加了一行 {$R Projectres Projectrc}
好了 编译执行程序 如图
注释
*rc 文件算是资源文件(*res) 的源文件 在程序编译过程中会编译成同名的 res 文件
上面的例子是个特例 一般我们不能使用和工程同名的资源文件
MainIcon ICON ctempmyico 中的 ICON 说明这是一个图标资源 MainIcon 是该资源的标识符 这个标识符应该是可以自定义的 不过在这个特例中 只能使用 MainIcon 因为程序要从同名的资源文件中查找标识为 MainIcon 的资源做图标