delphi4arab منتديات دلفي للعرب
هل يمكن جعل هذه الوظيفة تعمل خارج الفورم - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : هل يمكن جعل هذه الوظيفة تعمل خارج الفورم (/showthread.php?tid=7022)



هل يمكن جعل هذه الوظيفة تعمل خارج الفورم - nnff - 03-06-2015

السلام عليكم ورحمة الله وبركاته

والصلاة والسلام على سيدنا محمد وعلى اله وصحبة اجمعين


لدي مشكلة في جعل المهمة او الوظيفة تعمل خارج الفورم
الوظيفة او المهمة تغيير المؤشر الى شكل دائري عن طريقة تحويل ملف Bitmap
الوظيفة تعمل داخل الفورم , انا ****ها تعمل خارج الفور وعلى النظام كامل , اتمنى وصلت الفكرة


هذه الصورة توضح ذلك
[صورة: sCLlHC.gif]


المثال موجود بالمرفقات


هل يمكن جعل هذه الوظيفة تعمل خارج الفورم - الكاسر الآخر - 03-06-2015

السلام عليكم
اخي انت تستخدم دوال لتغيير المؤشر داخل برنامجك فقط ولهذا عند الخروج من نطاق برنامجك سيتغير المؤشر إلى مؤشر نظام التشغيل ... ولحل هذه المشكلة عليك إستخدام دوال API لتنفيذ إستدعاءات النظام System Calls

هذه بعض التعديلات على برنامجك لتحصل على ماتريد
عن طريق دالتي CopyIcon و SetSystemCursor من مكتبة user32.dll في وندوز

عند الانتهاء من نسخ ملف bitmap الخاص بك وتحويله إلى مؤشر ونسخه إلى مصفوفة المؤشرات الخاصة بدلفي ، ماعليك ألا الحصول على المقبض Handle الخاص بالمؤشر واستعماله في دالة SetSystemCursor حيث تأخذ هذه الدالة بارامترين الأول هو الـ Handle الخاص بالمؤشر والبارامتر الثاني هو حالة المؤشر الذي تريد استبداله بمؤشرك وهنا استخدمنا OCR_NORMAL للإشارة إلى المؤشر العام ..
وهذا الكود بعد التعديل

كود :
procedure TForm1.Button1Click(Sender: TObject); var bmpMask : TBitmap; bmpColor : TBitmap; hcur:hcursor; begin bmpMask := TBitmap.Create; bmpColor := TBitmap.Create; bmpMask.LoadFromFile('CircleMask.bmp'); bmpColor.LoadFromFile('Circle.bmp'); with iconInfo do begin fIcon := false; xHotspot := 15; yHotspot := 15; hbmMask := bmpMask.Handle; hbmColor := bmpColor.Handle; end; Screen.Cursors[crMyCursor] := CreateIconIndirect(iconInfo); Screen.Cursor := crMyCursor; hcur:= CopyIcon(Screen.Cursors[crMyCursor]); /////// للحصول على مؤشرك من مصفوفة المؤشرات الخاصة بدلفي setsystemcursor(hcur,OCR_NORMAL); /// لتغيير مؤشر نظام التشغيل bmpMask.Free; bmpColor.Free; end;

ولإرجاع المؤشر لحالته الطبيعية أكتب هذا الكود في في حدث FormDestroy

كود :
SystemParametersInfo(SPI_SETCURSORS,0,0,WM_SETTINGCHANGE or SPIF_UPDATEINIFILE ) ;