資源文件(*.res)通過編譯指令 $R 關聯, 譬如工程文件 Project1 中的 {$R *.res} 就是關聯 Project1.res 資源文件, 我們直接寫作 {$R Project1.res} 不會有問題(但如果工程文件改名時, 你也得隨著改才行). 譬如:program Project1;
這個資源文件中至少包含著文件圖標, 假如我們刪除 {$R *.res} 後編譯, 看前後對比圖:
uses
Forms,
Unit1 in ’Unit1.pas’ {Form1};
{$R Project1.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
這時我們可以通過代碼, 調用其他圖標:procedure TForm1.FormCreate(Sender: TObject);
begin
Application.Icon.LoadFromFile(’c:tempmy.ico’);
end;
這樣還是不好, 如果運行程序的電腦沒有這個文件呢? 最好讓程序攜帶著它, 這就要通過資源文件. 讓我們從頭來過:
1、新建一個 VCL Forms Application; 並 Save All;
2、並通過菜單 Project → VIEw Souse 打開工程源文件;
3、刪除 {$R *.res}
4、如圖新建一個 Text 文件
5、文件編輯如下:
MainIcon ICON "c:tempmy.ico"
注意: 其中的 c:tempmy.ico 可以隨便定義, 但文件必須存在; 另外其中的所有大小寫無關, 路徑兩邊的雙引號也可以省略.
6、把它保存為: Project1.rc ; 注意要保存在程序相同目錄, 文件名和工程文件名相同, 後綴是 rc
7、如圖把 Project1.rc 添加到工程組:
8、這時工程文件自動添加了一行: {$R ’Project1.res’ ’Project1.rc’}
9、好了, 編譯執行程序, 如圖:
注釋:
1、*.rc 文件算是資源文件(*.res) 的源文件, 在程序編譯過程中會編譯成同名的 res 文件;
2、上面的例子是個特例, 一般我們不能使用和工程同名的資源文件;
3、MainIcon ICON "c:tempmy.ico" 中的 ICON 說明這是一個圖標資源, MainIcon 是該資源的標識符, 這個標識符應該是可以自定義的, 不過在這個特例中, 只能使用 MainIcon , 因為程序要從同名的資源文件中查找標識為 MainIcon 的資源做圖標.