การสร้าง resource file (.res)
สำหรับขั้นตอนการสร้างไฟล์ต่าง ๆ ขอใช้ภาพประกอบเพื่อให้ง่ายต่อการเข้าใจ
ลำดับแรกจะต้องสร้าง Text file ที่ต้อบการจะเก็บค่าต่าง ๆ
ในที่นี้ผมขอยกตัวอย่าง คือการเก็บรายชื่อ ประเทศดังภาพตัวอย่าง
ขั้นตอนที่ 2 สร้าง file Country.RC
โดยสร้างจากเดลไฟ หรือจะใช้ Notepad ก็ได้
หลังจากสร้าง Country.RC แล้ว ให้เขียน Script ดังภาพ
Create country.RC |
ขั้นตอนที่ 3 Compile Country.RC
ด้วยคำสั่ง
BRCC32 D:\XE8\test_resource_file\Country.RC
Compile Country.RC |
หลังจาก Compileจะได้ไฟล์ Country.RES
ดังภาพ
Country.RES |
ขั้นตอนที่ 4 ขั้นตอนการเรียกใช้งานไฟล์ Country.RES
โดยให้ Add เพิ่ม บรรทัดการอ้างถึง file Country.res ดังตัวอย่าง
{$R Country.res}
Add Country.res into project |
ขั้นตอนที่ 5 ขั้นตอนการเขียนคำสั่งเพื่อเรียกใช้ Country.res
ซึ่งจะอ้างถึงไฟล์ดังตัวอย่าง
function LoadCountryCode(Lists: TStrings): boolean;
var
stream: TResourceStream;
i: byte;
begin
stream := TResourceStream.Create(HInstance, 'COUNTRY', RT_RCDATA);
Result := false;
try
Lists.LoadFromStream(stream);
Result := true;
finally
stream.Free;
end;
end;
Reference to Resource file |
ทดลองเรียกฟังชั่น
เพื่ออ่านข้อมูลจาก country.res
มาแสดงใน TCombobox และ TListbox
Sample to call Country.res and load into control |
คำสั่งในปุ่ม
Load from .resource file
procedure TForm2.Button1Click(Sender: TObject);
begin
LoadCountryCode(ComboBox1.Items);
LoadCountryCode(ListBox1.Items);
end;
Delphi work with Country.res |
สุดท้าย ลองเอา Program Resource Hacker เปิดดู Project1.exe
ได้ดังภาพ เห็นส่วนของ Resource COUNTRY
Resource Hacker |
ทดสอบแก้ไข EXE โดยแก้ไฟล์ EXE ผ่าน Program Resource Hacker
Modify resource with Resource Hacker. |
How to store Icon, Bitmap
Country.Rc file.
REDICO ICON resource\Red.ico
GREENICO ICON resource\Green.ico
ONLINE BITMAP resource\online.BMP
How to get icon, bitmap in Delphi.
var
myIcon: TIcon;
begin
myIcon := TIcon.Create;
try
Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'ONLINE');
myIcon.LoadFromResourceName(HInstance, 'REDICO');
ImageList1.AddIcon(myIcon);
myIcon.LoadFromResourceName(HInstance, 'GREENICO');
ImageList1.AddIcon(myIcon);
finally
myIcon.Free;
end;
// showmessage(format('%d', [ImageList1.Count]));
end;
Comments
Post a Comment