![]() |
|
جعل مشروعي يعمل على كل الأجهزة - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : جعل مشروعي يعمل على كل الأجهزة (/showthread.php?tid=2250) الصفحات:
1
2
|
جعل مشروعي يعمل على كل الأجهزة - أبو محمد اللحياني - 29-09-2010 بالنسبة للدالة GetDC فإنها تعطي المقبض الخاص بالجهاز ، وأناأريـــد الشاشة وهذا رقم لا يتغير أثناء مسيرة عمل البرنامج ، فلا داعي لتكرار مناداتها في الـ Timer ، فالمناسب هو مناداتها عند تشغيل البرنامج فقط. أما الدالة GetPixel فهي تعطي إحداثيات الماوس وما فيها من ألوان فالمناسب مناداتها كل مرة فوضعت في الحدث Timer . نعم كان المناسب أن أكتب هكذا : كود : begin
// DC := ReleaseDC(0,0); // error !
// DC := ReleaseDC(Application.Handle,0); // error !
// DC := ReleaseDC(GetActiveWindow,0); // error !
DC := GetDC(0); // okey
if DC = 0 then
Timer1.Enabled := False;
end;كود : pColor := GetPixel(DC, p.X, p.Y);
if pColor <> CLR_INVALID then
begin
GetColor (pColor) ;
SetColor;
end
else txtColor.Caption := 'Pixel Invalid.';أما بالنسبة للدالة ReleaseDC فإنها مع عدة محاولات لم تعمل عندي والله اعلم . ولما نقلت الملف التنفيذي إلى الجهاز الآخر للاختبار ظهرت العبارة : Pixel Invalid. فعلمت أن الخطأ في الدالة GetPixel . وجربت طريقة أخرى موجودة على هذا الموقع كود : http://www.delphitricks.com/source-code/graphic/get_a_pixel_color_of_the_desktop.htmlولكن أيضاً نفس المشكلة . |