الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لوحة المفاتيح وارقامها

بدأه ذاكر في 18 يناير 2009 · 4 رد · 7,666 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

اخوتي الاعزاء

خبراء منتي الفريق العربي للبرمجة

لقد سالت اكثر من اربعة اسئلة ولم اجد الاجابة الشافية

ورجوا ان اجد هذة المرة منكم الاجابة علي هذا الموضوع فهو يهمني كثيرا

الموضوع اني حسب ما فهمت ان لكل مفتاح من مفاتيح الكبورد رقم خاص في لفة البرمجة بالفجوال بيسك حتي اني عندما اريد تنفيذ اجراء معين بعد الضغط علي مفتاح الانتر يجب ان اكتب الكود كالاتي

if keyAscii = 13 then

الرقم 13 هنا يشير الي مفتاح الانتر صح

طيب انا عايز اعرف باقي ارقام لوحة المفاتيح وخاصتا

مفتاح الشفت و مفتاح السهم السفلي و العلوي و مفتاح الخروج

الي اخره ارجوكم

ادامكم الله في خدمة العلم

#2

يمكنك أن تعرفها بنفسك، مثلاً ضع Form واضبط خاصية KeyPreview إلى True ، والآن في نافذة برمجة الـForm اختر الحدث KeyPress ، واكتب فيه:

MsgBox KeyAscii

وهكذا تحصل على أرقام الأزرار، طبعاً ليس كل الأزرار، لتحصل على الأزرار كلها انتقل إلى الحدث KeyDown ، واكتب:

MsgBox KeyCode

وفقك الله

1

هذه الجملة خاطئة  :wacko: 


#3

السلام عليكم...

هناك نوعان من المفاتيح التي يمكن أن نتعامل معها من خلال VB:

1. مفاتيح الرموز المطبوعة: و تشمل مفاتيح الحروف و الأرقام و الرموز المكتوبة مثل * و @ و % ... إلخ. بالإضافة إلى مجموعة من رموز التحكم التي لا تظهر عند الكتابة لكنها تؤثر في الكتابة، مثل المفتاح Enter و المفتاح BackSpace و المفتاح Tab. جميع هذه الرموز (سواء أكانت الحروف أو الأرقام أو الرموز المكتوبة أو رموز التحكم) لها أرقام في جدول آسكي (ASCII code table) و الذي يمتد ترقيمه من 0 إلى 255. رموز التحكم تمتد من 0 (NULL) إلى الرقم 31. مثلاً المفتاح Enter رقمه 13، و المفتاح Tab رقمه 9، و المفتاح BackSpace رقمه 8، ... إلخ. أما بقية الحروف و الأرقام و الرموز فتمتد من 32 (الفراغ Space) إلى 255 (مثلاً الأرقام تمتد من 48 للرقم صفر إلى 57 للرقم تسعة).

للتعامل مع هذه المفتايح نستعمل إجراء الحدث KeyPress:

  1. Private Sub Text1_KeyPress(KeyAscii As Integer)
  2. ' ...
  3. End Sub
  4.  

نلاحظ في هذا الإجراء وجود بارامتر باسم KeyAscii و هو يعطينا رقم آسكي للمفتاح الذي تم الضغط عليه. لاحظ أنه في جدول آسكي يوجد فرق بين الحروف اللاتينية الكبيرة (CAPITAL) و الحروف الصغيرة (small). فمثلاً رقم آسكي للحرف a هو 97 بينما للحرف A هو 65.

يمكنك معرفة رقم أي مفتاح يتم ضغطه باستخدام إجراء بسيط كالتالي:

  1. Private Sub Text1_KeyPress(KeyAscii As Integer)
  2. MsgBox CStr(KeyAscii)
  3. End Sub
  4.  

* لسنا مضطرين لحفظ قيم آسكي، حيث يمكننا استعمال الدالة Asc أو الدالة Chr. نفرض أننا نريد أن نتأكد من ضغط مفتاح النسبة المئوية (%) و الذي رقمه 37. يمكنني أن أكتب هذا الرقم في ورقة و أبحث عنها كلما احتجت لكتابة كود كالتالي:

  1. Private Sub Text1_KeyPress(KeyAscii As Integer)
  2. If KeyAscii = 37 Then
  3. ' ...
  4. ' ...
  5. End If
  6. End Sub
  7.  

لكن يمكنني الاستغناء عن ذلك بكتابة الكود كالتالي:

  1. Private Sub Text1_KeyPress(KeyAscii As Integer)
  2. If KeyAscii = Asc("%") Then
  3. ' ...
  4. ' ...
  5. End If
  6. End Sub
  7.  

أو بالشكل التالي كالتالي:

  1. Private Sub Text1_KeyPress(KeyAscii As Integer)
  2. If Chr(KeyAscii) = "%" Then
  3. ' ...
  4. ' ...
  5. End If
  6. End Sub
  7.  

2. مفاتيح التنقل و المفاتيح الوظيفية: و التي تشمل مفاتيح الأسهم الأربعة و PageDown و PageUp و Home و End و Delete و Insert و المفاتيح من F1 إلى F12 و بعض المفاتيح الأخرى مثل CapsLock و Escape و غيرها، بالإضافة إلى كافة المفاتيح التي يشملها جدول آسكي.

في هذه الحالة الترقيم لا يتبع جدول آسكي، بل أرقاماً خاصة بلوحة المفاتيح تسمى "شفرات مسح لوحة المفاتيح" (Keyboard scan codes) و التي تعني أن كل مفتاح في لوحة المفاتيح له رقم بصرف النظر عما إذا كان يتبع جدول آسكي أم لا، و بصرف النظر عما يعنيه ذلك المفتاح. مثلاً مفتاح الحرف A رقمه 65 سواءً أكتبنا به حرف a صغير أو حرف A كبير أو حرف ش (الشين العربي). كذلك فإن رقم المفتاح صفر في لوحة المفاتيح الأساسية هو 48 أما رقم المفتاح صفر الموجود في لوحة المفاتيح الرقمية (على يمين لوحة المفاتيح) فهو 96.

للتعامل مع مفاتيح التنقل و المفاتيح الوظيفية، بالإضافة إلى مفاتيح الإزاحة (Shift Keys) و التي تشمل Alt و Shift و Ctrl نستعمل إجراء الحدث KeyDown (أو KeyUp) و الذي يكون بالشكل التالي:

  1. Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  2. ' ...
  3. End Sub
  4.  

نلاحظ هنا وجود بارامترين: KeyCode الذي يعطينا رقم المفتاح المضغوط، و Shift الذي يعطينا حالة مفاتيح الإزاحة (Alt و Shift و Ctrl) ما إذا كان مضغوطاً مع المفتاح أم لا.

أيضاً هنا لسنا مضطرين لحفظ قيم المفاتيح لأن VB توفر ثوابت لأرقام المفاتيح تبدأ كلها بالمقطع vbKey (فقط اكتب vbKey ثم اضغط Ctrl+Space لتظهر لك قائمة الثوابت فتختار منها)، مثلاً: vbKeyEscape للمفتاح Escape و vbKeyF7 للمفتاح F7 و vbKeyHome للمفتاح Home و vbKey5 لمفتاح الرقم 5 في اللوحة الرئيسية و vbKeyNumpad5 لمفتاح الرقم 5 في لوحة مفاتيح الأرقام على اليمين و vbKeyG لمفتاح الحرف G (سواء أكانت "G" أو "g" أو "ل" أو "لأ").

بقي علينا معرفة ما إذا كان أحد أو بعض أو كل مفاتيح الإزاحة (Alt و Shift و Ctrl) مضغوطاً أم لا. في هذه الحالة نحتاج إلى اختبار قيمة البارامتر Shift كما في الكود التالي الخاص بالحدث KeyDown التابع لـ Text1. اكتب هذا الكود و شغل البرنامج ثم اضغط المفتاح F9 لوحده و مع أي من مفاتيح الإزاحة و انظر النتيجة:

  1. Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  2. If KeyCode = vbKeyF9 Then
  3. ' Shift اختبار ضغط المفتاح
  4. If (Shift And vbShiftMask) <> 0 Then
  5. MsgBox "Shift key pressed"
  6. ' Ctrl اختبار ضغط المفتاح
  7. ElseIf (Shift And vbCtrlMask) <> 0 Then
  8. MsgBox "Ctrl key pressed"
  9. ' Alt اختبار ضغط المفتاح
  10. ElseIf (Shift And vbAltMask) <> 0 Then
  11. MsgBox "Alt key pressed"
  12. Else
  13. ' مضغوط لوحده F9 المفتاح
  14. MsgBox "F9 pressed alone"
  15. End If
  16. End If
  17. End Sub
  18.  

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#4

إليكم برنامج يظهر لكم الآسكي كود عند الضغط على إي زر

ASCII_CODE.rar

#5

بســم الله الـرحمــن الرحيــم

شكرا جزيلا اخوتي الاعزاء

ادامكم الله في خدمة العلم

وجزاكم عليه خيرا

سوف اطبق كل ما افتموني به

وشكرا

مواضيع مشابهة