delphi4arab منتديات دلفي للعرب
إضافة أحداث من Windows Message غير متوفرة في المكون (شرح فلاش) - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : دروس دلفي للمبتدئين (https://delphi4arab.net/forum/forumdisplay.php?fid=13)
+--- الموضوع : إضافة أحداث من Windows Message غير متوفرة في المكون (شرح فلاش) (/showthread.php?tid=573)



إضافة أحداث من Windows Message غير متوفرة في المكون (شرح فلاش) - kachwahed - 14-02-2009

بسم الله الرحمن الرحيم
الحمد لله والصلاة والسلام على رسول الله صلى الله عليه وسلم، أما بعد...
السلام عليكم

في هذا الموضوع...
شرح مختصر حول رسائل الويندوز (Windows Message) مع شروحات مصورة (فلاش SWF) حول طريقة استعمال وإدماج رسائل الويندوز كأحداث تضاف الى المكونات الأصلية للدلفي.

نبدأ برسائل الويندوز وطريقة استعمالها في النموذج TForm...
ثم نعرض طريقة إدماجها في أي مكون باستعمال تقنية إدماج الأقسام (interjected class).

بداية وباختصار...
رسائل الويندوز (Windows Message)

  1. ما هي رسائل الويندوز؟
رسائل الويندوز هي إخبار (أو إشعار) من مرسل (الويندوز أو برنامج خارجي) إلى مستقبل (برنامجك) عن وقوع حدث معين من طرف نظام الويندوز.

مثلا: تحريك الماوس على سطح النموذج (Form) يتم بإرسال حدث تحريك الماوس، وبنفس الطريقة حدث النقر على أحد أزراره،...الخ.

يضع الويندوز بين أيدينا مجموعة "رسائل الويندوز" التي يمكن استخدامها بعدة أشكال، من تحقيق أغراض مختلفة.
تبدو الرسائل في شكلها العام كما يلي:
PHP كود :
Type
  Tmsg 
= packed record
    hwnd
: HWND; // مقبض (Handle) العنصر المرسل
    
message: Uint; // معرف رسالة الويندوز
    
wParam: WPARAM; // المتغير wParam للرسالة
    
lParam: LPARAM; // المتغير lParam للرسالة
    
time: DWORD; // وقت إرسال الرسالة
    
pt: Tpoint; // إحداثيات موضع مؤشر الماوس عند وقوع حدث الرسالة
end; 
ملاحظة هامة:
هذا شكل عام لرسالة الويندوز، وتعريف الرسالة يختلف من رسالة إلى أخرى حسب نوعية المتغيرات التي يضمها.

مثال صغير:
WM_CHAR هو رسالة ويندوز تقع عند الضغط أحد أزرار لوح المفاتيح.
تستعمل هذه الرسالة في الحدث OnKeyPress الشهير المتوفر في معظم المكونات المرئية للدلفي.
من بين متغيرات هذا الحدث النوع TWmChar الذي يعرف كما يلي:
PHP كود :
Type
  TWmChar 
= packed record
    msg
: Cardinal; // رقم (كود) الحدث وهو ثابت 258
    
CharCode: Word; // كود الزر المضغوط بتعريف ASCII مثل ا :VK_CANCEL
    
Result: Integer; // قيمة رقمية يرجعها البرنامج الذي تلقى الحدث
    
KeyData: Integer; // قيمة عددية متعلقة بالزر المضغوط
  
end; 

  1. كيف يتم استعمالها؟
يتم استدعاء أحداث الويندوز ليتلقاها البرنامج في شكل إجراء (Procedure)، وتكتب الأوامر المراد حدوثها في هذا الإجراء، وفق الشكل التالي:
PHP كود :
procedure {إسم الإجراء}(var {اسم المتغير}: {نوع متغير الحدث}); message {اسم الحدث}; 
مثال عن الحدث WM_CHAR:
PHP كود :
procedure KeyPerssEvent(var VarKeyPress: TWMCHAR); message WM_CHAR; 
مثال عن كتابة الأوامر في الإجراء:
PHP كود :
procedure TForm1.KeyPerssEvent(var VarKeyPress: TWMCHAR);
begin
  ShowMessage
('Key Pressed!');
end; 

ملاحظات:
1- يمكن استدعاء حدث في مكون معين باستخدام الدالة Perform، مثلا:
كود :
Memo1.Perform(...)
2- كما يمكن إرسائل حدث معين باستخدام الدالة SendMessage
كود :
SendMessage(...)
وهذا الرابط لشرح مصور في ملف فلاش (SWF) حول طريقة إضافة واستعمال أحداث جديدة.
كود :
http://rapidshare.com/files/197882522/WinMsgDemo.rar
****ا أن ينال إعجابكم، هذا أول شرح فلاش أقوم بهBig Grin
ستأتي البقية فيما بعد إن شاء الله.



إضافة أحداث من Windows Message غير متوفرة في المكون (شرح فلاش) - gigi - 14-02-2009

ياريت اخي تضع الشرح كمرفق او برابط غير الرابدشير والشكر لك على كل حال


إضافة أحداث من Windows Message غير متوفرة في المكون (شرح فلاش) - kachwahed - 14-02-2009

لا يمكن وضعه في مرفق لأن حجمه كبير.
لا أدري لم كل هذا رغم التحميل من الرابيدشير اختلف الآن، على كل حال هذا رابط آخر:
كود :
http://www.zshare.net/download/5561805160c59144/
أي ملاحظة أو خطأ ير جى التنبيه.
ولمن له زيادة لها علاقة بالموضوع فله أن يطرحها مع الشرح بمثال إن أمكن حتى نجعل من الموضوع مرجع بخصوص رسائل الويندوز.
شكرا كثيرا



إضافة أحداث من Windows Message غير متوفرة في المكون (شرح فلاش) - kachwahed - 23-02-2009

السلام عليكم ورحمة الله
اليوم نكمل إن شاء الله ما وعدناكم به، وهو طريقة إضافة رسائل الأحداث على المكونات الأصلية للدلفي، وقبل ذلك نعرض أشهر الطرق الممكنة للولوج إلى الخصائص المحمية (Protected property) وتغيير قيمتها.
رابط الشرح:
كود :
http://www.zshare.net/download/560453999fe624e8/
حجم الملف:
85 Mb



إضافة أحداث من Windows Message غير متوفرة في المكون (شرح فلاش) - kachwahed - 25-02-2009

نفس المثال في ملف بحجم أقل
كود :
http://www.mediafire.com/file/tjy2ymjumyd/InterjectedClassDemo.rar

28.5 Mb



إضافة أحداث من Windows Message غير متوفرة في المكون (شرح فلاش) - kachwahed - 27-01-2010

وعليكم السلام ورحمة الله
إقتباس :أخي ممكن إعادة تحميل المرفقات
غير ممكن، لأن المرفقات ليست بحوزتي
مر على إنشاء هذه الدروس قرابة عام
وقد فقدت القرص الصلب (خرب) بعدها وضاعت مني أشياء كثيرة... بما فيها هذه الدروس
رجائي أن يقوم من حملها بإعادة رفعها للفائدة، جزاه الله خيرا
وشكرا كثيرا.



إضافة أحداث من Windows Message غير متوفرة في المكون (شرح فلاش) - ramijz - 27-01-2010

kachwahed كتب :
وقد فقدت القرص الصلب (خرب) بعدها وضاعت مني أشياء كثيرة...

أخي العزيز استغرب عندما اسمع من اشخاص مبرمجين كيف لا يقومون كل فترة بأخذ نسخة عن بياناتهم

طيب شو خلينا للمبتدئين ؟

أنا عن نفسي أخذ كل اسبوع نسخة عن بياناتي مهما كان حجمها ولدي شيفرات وبيانات من 15 سنة ولا اذكر بأني اضعت شيء من بياناتي وهذا من فضل الله اولاً ولحرصي ثانياً

اتمنى من كل الاخوة الحرص وعدم الاستهانة بأي معلومة ولا تبخل على نفسك بأخذ نسخة احتياطية دوماً

وشكراً