![]() |
|
استفسار عن تعريف مفاتيح الكيبورد - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : استفسار عن تعريف مفاتيح الكيبورد (/showthread.php?tid=5042) |
استفسار عن تعريف مفاتيح الكيبورد - Abdullah - 20-03-2013 السلام عليكم ورحمة الله إن شاء الله تكونوا بصحة وعافية استفساري عن الحدث onekeypress مشكلتي لمن أكتب if key = 'a' then showmessage('Hello team delphi4arab'); بتزبط لكن لما أستبدل a بـ f1 وجربت VK_F1 وجربت #112 وأضغط F1 من الكيبورد مايظهر المسج بإنتظار الحلول وشكرا مقدما ^^ استفسار عن تعريف مفاتيح الكيبورد - AnoirsoftDeveloper - 20-03-2013 وعليكم السلام قم بضبط KeyPreview في الفورم إلى True ولا تنسى البحث قبل الطرح أخي الفاضل http://www.delphi4arab.net/forum/showpost.php?p=19075&postcount=4 استفسار عن تعريف مفاتيح الكيبورد - Najy Ibraheem - 21-03-2013 السلام عليكم... هناك نوعان أساسيان من المفاتيح: 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
// ...*** إجابة سؤالك: للاستجابة لضغط المفتاح F1 استعمل الحدث OnKeyDown أو OnKeyUp: كود : if Key = VK_F1 then
// ...آسف على الإطالة، و لكن أردت التوضيح. نرجو الاستفادة و السلام. استفسار عن تعريف مفاتيح الكيبورد - Abdullah - 21-03-2013 يعطيكم العافية على التفاعل Najy Ibraheem انا هو الاسف تعبتك معي وافدتني كثير والمشكلة انحلت. شكراً. |