المؤشر الذي يتم الحصول عليه باستخدام Loadcursor() في دلفي يكون باللونين الأبيض والأسود فقط. كيف يمكن الحصول على مؤشر ملون في البرنامج؟ حاول المؤلف إنشاء البرنامج التالي:
الطريقة الأولى: استخدم Loadcursorfromfile() لتحميل الأيقونة كمؤشر من الخارج
يمكن لوظيفة Loadcursorfromfile() قراءة الملفات ذات اللاحقة *CUR، *ICO، و*ANI كمؤشرات، حيث ICO هو تنسيق رمز اللون (يمكن إنتاجه باستخدام Image Editor)، وANI هو تنسيق مؤشر متحرك. ما يلي هو مقطع برنامج توضيحي يفتح أيقونة كمؤشر. عندما يتحرك المؤشر إلى منطقة الاختبار، سيتغير المؤشر إلى النمط المحدد؛
{لنفترض: opendialog1:Topendialog;Bitbtn1:Tbitbtn}
PROcedure TForm1.BitBtn1Click(Sender:TObject);
فار tt:pchar;الحجم:عدد صحيح;s:سلسلة;
يبدأ
إذا opendialog1.Execute بعد ذلك
يبدأ
الحجم:=الطول(opendialog1.filename);
getmem(tt,size);
s:=opendialog1.filename;
strpcopy(tt,s);
screen.cursors[2]:=loadcursorfromfile(tt);
bf.cursor:=2;
freemem(tt,size);
نهاية؛
نهاية؛
الطريقة الثانية: تحميل المؤشر الملون من ملف المورد
يجب تضمين الملف *CUR عند إرسال البرنامج باستخدام الطريقة الأولى، لذا فإن تحميل المؤشر الملون من ملف المورد يعد طريقة أكثر جدوى. استخدم رمزًا لتخزين المؤشر الملون، وقم بتخزين الرمز في ملف مؤقت عند استخدامه، واستخدم Loadcursorfromfile() لقراءة المؤشر الملون من الملف المؤقت.
شريحة البرنامج:
الإجراء ZloadfromResourse(screenindex:integer;name:Pchar);
فار TD:ticon;
يبدأ
يحاول
td:=ticon.Create;
td.Handle:=LoadIcon(Hinstance,name);
td.SaveToFile('temp.cur');
screen.Cursors[screenindex]:=loadcursorfromfile('temp.cur');
deletefile('temp.cur');
أخيراً
td.free;
نهاية؛
نهاية؛
يقوم هذا البرنامج بتغيير الرمز المسمى بالاسم إلى المؤشر باستخدام مؤشر الشاشة للرقم التسلسلي؛
مثال:
ZloadfromResourse(2,′myicon′);
Form1.cursor:=2;