مشكلة في KeyPress
#11
السلام عليكم
يمكن ان تعرف رقم الحرف الذي تود ادراجه بالمقارنة
أكتب بالحدث شيئ مثل

كود :
ShowMessage(IntToStr(Ord(key)));

نفذ وجرب الضغط على الحرف الذي تشاء مثلا "غ" يظهر 219
ومنه يمكن تعديل الكود ووضع #219 بدلا من الحرف 'غ'
الكود الأول يصبح

كود :
begin  if not (key in ['0'..'9', #8, #13 ,'.',#219]) then key := #0; end;
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
الرد
#12
اخي الغالي
جربت الكود وظهر لي الرقم 1594
ووضعته بالكود الاخر ولم يعمل
if not (key in ['0'..'9', #8, #13 ,'.',#1594]) then key := #0;
الرد
#13
نعم
جهازي قديم Win XP ودلفي 5 الكود الذي كتبته فوق صحيح عندي ان الChar هي من نوع AnsiChar وبالتالي قيمة حرف "غ" هي 219
جهازك احدث والاهم نسخة دلفي التي تستخدم 2009 وما فوق وبها الChar هي من نوع WideChar وبالتالي قيمة حرف "غ" هي 1594
في حالة WideChar الكود السابق لن ينفع لان جزء من المعلومة ضاع، انظر جيدا الWarning بعد Compile

هل جربت الكود السابق

كود :
if not CharInSet(Key, ['0'..'9', #8, #13 ,'.',#1594]) then    Key := #0;
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
الرد
#14
ووضعته بالكود الاخر ولم يعمل اخي
احسن حاجه
اضع حرف انجليزي بدلا من العربي ثم اغيره اخي باقاعده if
بارك الله فيك اخي
الرد
#15
جرب:
كود :
Uses WideStrUtils;  if not WideStrUtils.InOpArray(Key, [#8, #13, '.', 'غ', '0', '1', '2', '3',    '4', '5', '6', '7', '8', '9']) then    Key := #0;
[-] كل من 1 user says قال شكرا ل PLANSHARP على المشاركة المفيدة
  • wadoud
الرد
#16
نفع معي الكود اخي
بارك الله فيك
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم