เคอร์เซอร์ที่ได้รับจากการใช้ Loadcursor() ใน Delphi เป็นเพียงขาวดำ จะทำให้เคอร์เซอร์มีสีในโปรแกรมได้อย่างไร? ผู้เขียนพยายามสร้างโปรแกรมต่อไปนี้:
วิธีที่ 1: ใช้ Loadcursorfromfile() เพื่อโหลดไอคอนเป็นเคอร์เซอร์จากภายนอก
ฟังก์ชัน Loadcursorfromfile() สามารถอ่านไฟล์ที่มีส่วนต่อท้าย *CUR, *ICO และ *ANI เป็นเคอร์เซอร์ โดยที่ ICO คือรูปแบบไอคอนสี (สามารถสร้างได้ด้วย Image Editor) และ ANI คือรูปแบบเคอร์เซอร์แบบเคลื่อนไหว ต่อไปนี้เป็นส่วนโปรแกรมสาธิตที่เปิดไอคอนเป็นเคอร์เซอร์ เมื่อเคอร์เซอร์เลื่อนไปยังพื้นที่ทดสอบ เคอร์เซอร์จะเปลี่ยนเป็นรูปแบบที่เลือก
{สมมติว่า: opendialog1:Topendialog;Bitbtn1:Tbitbtn}
ขั้นตอน TForm1.BitBtn1Click (ผู้ส่ง: TObject);
var tt:pchar;ขนาด:จำนวนเต็ม;s:สตริง;
เริ่ม
ถ้า opendialog1.Execute แล้ว
เริ่ม
ขนาด:=ความยาว(opendialog1.ชื่อไฟล์);
getmem(tt,ขนาด);
s:=opendialog1.ชื่อไฟล์;
strpcopy(tt,s);
screen.cursors[2]:=loadcursorfromfile(tt);
bf.เคอร์เซอร์:=2;
ฟรีเมม(tt,ขนาด);
จบ;
จบ;
วิธีที่ 2: โหลดเคอร์เซอร์สีจากไฟล์ทรัพยากร
เมื่อส่งโปรแกรมโดยใช้วิธีที่ 1 จะต้องรวมไฟล์ *CUR ไว้ด้วย ดังนั้นการโหลดเคอร์เซอร์สีจากไฟล์ทรัพยากรจึงเป็นวิธีที่เป็นไปได้มากกว่า ใช้ไอคอนเพื่อจัดเก็บเคอร์เซอร์สี จัดเก็บไอคอนในไฟล์ชั่วคราวเมื่อใช้งาน และใช้ Loadcursorfromfile() เพื่ออ่านเคอร์เซอร์สีจากไฟล์ชั่วคราว
ส่วนโปรแกรม:
ขั้นตอน ZloadfromResourse (screenindex: integer; ชื่อ: Pchar);
var td:ticon;
เริ่ม
พยายาม
td:=ticon.สร้าง;
td.Handle:=LoadIcon(คำแนะนำ ชื่อ);
td.SaveToFile(′temp.cur′);
screen.Cursors[ดัชนีหน้าจอ]:=loadcursorfromfile(′temp.cur′);
ลบไฟล์('temp.cur');
ในที่สุด
td.free;
จบ;
จบ;
โปรแกรมนี้จะเปลี่ยนไอคอนชื่อเป็นเคอร์เซอร์ด้วยดัชนีหน้าจอหมายเลขซีเรียล
ตัวอย่าง:
ZloadfromResourse(2,′myicon′);
Form1.เคอร์เซอร์:=2;