السلام عليكم...
هناك نوعان أساسيان من المفاتيح:
1. المفاتيح التي تمثل الرموز الكتابية (الحروف و الأرقام و العلامات) و هذه تمثل جزءاً من رموز جدول شفرة آسكي (ASCII code table) الذي يحتوي أيضاً على بعض الرموز غير المرئية (رموز تحكم). رموز هذا الجدول تسمى المحارف (Characters) و تتم معالجتها في الحدث OnKeyPress و لهذا تجد البارامتر Key من النوع Char (أي Character).
2. المفاتيح الوظيفية: و التي تشمل مفاتيح الأسهم الأربعة و PageDown و PageUp و Delete و Insert و Home و End و Caps Lock و المفاتيح من F1 إلى F12 و غيرها. و هذه لا تمثل رموزاً في جدول آسكي، مع بعض الاستثناءات. هذه المفتايح تتم معالجتها في الحدث OnKeyDown أو OnKeyUp.
* ربما يقول أحد: و لكن لكل مفتاح قيمة أو رقم؟ نعم و لكن تلك الأرقام أو القيم تسمى "شفرات المسح" (Scan Codes) حيث لكل مفتاح في لوحة المفاتيح رقم بصرف النظر عن نوع أو مجموعة المفتاح. مثلاً المفتاح المكتوب عليه حرف "A" بالإنجليزية ("ش" بالعربية) يمكن أن يعطي 3 قيم مختلفة في الحدث OnKeyPress (إذا كانت اللغة إنجليزية فإن Key = a أو Key = A مع Shift أو Caps LockK، و إذا كانت اللغة عربية فإن Key = ش). و لكن من ناحية أخرى فإن لهذا المفتاح رقم ثابت (شفرة المسح - Scan Code) بصرف النظر عن الرمز الذي يمثله. لاحظ مثلاً في اختصارات أوامر القوائم نجد كثيراً أن الاختصار Ctrl+A يستعمل لتحديد كامل النص. هذا الاختصار يعمل دائماً بصرف النظر عما إذا كانت اللغة إنجليزية أو عربية.
* معظم المفاتيح الوظيفية - أو ربما كلها - ممثلة في Windows بأسماء ثوابت تبدأ بـ VK، مثلاً: VK_HOME للمفتاح Home و VK_F5 للمفتاح F5 و هكذا.
* هناك أحياناً توافق للفاتيح التي تمثل قيماً في جدول آسكي (الرموز الكتابية) بين قيمة المفتاح في جدول آسكي و قيمة شقرة المسح. مثلاً المفتاح Tab رقمه في جدول آسكي هو 9 و شفرة المسح له (VK_TAB) أيضاً هي 9. و هذا الأمر نجده أيضاً مع مفاتيح مثل Enter (حيث VK_RETURN = 13) و المفتاح Back Space (حيث VK_BACKSPACE = 8).
* نقطة أخيرة: لن تجد ثابتاً باسم VK_S مثلاً لتمثيل المفتاح S. فماذا لو أردت أن تعالج ضغط المفتاح S في الحدث OnKeyDown أو OnKeyUP؟ - استعمل الصيغة التالية:
كود :
if Key = Ord('S') then
// ...
أي باستعمال الدالة Ord مع الشكل الكبير (Capital) للحرف.
*** إجابة سؤالك: للاستجابة لضغط المفتاح F1 استعمل الحدث OnKeyDown أو OnKeyUp:
كود :
if Key = VK_F1 then
// ...
آسف على الإطالة، و لكن أردت التوضيح.
نرجو الاستفادة و السلام.