منع المكون TEdit قبول الحروف!
#1
السلام عليكم ورحمة الله
هذا مثال في دلفي عن منع المكون TEdit في دلفي من قبول الحروف وإجباره على قبول الأرقام فقط.Wink
مثال:
1- نضع مكون TEdit في فورم (Form)
2- نذهب بعدها إلى الأحداث (Event) وبالخصوص إلى "OnKeyPress"
3- نضغط مرتين على الحدث من الجهة اليمنى ونكتب الكود (Code) التالي يعد Begin مباشرة:[/COLOR]
كود :
begin if not (Key in ['0'..'9', #8]) then begin Key := #0; Beep; end; end;
ولعمل عكس هذا، أي إجبار المكون TEdit قبول الحروف والرموز الأخرى فقط وعدم قبول الأرقام نقوم بما يلي:
- نتبع نفس الخطوات الأولى لكن هذه المرة نقوم بتغيير كلمة واحدة فقط في الكود وهي: Not
يصبح الكود كالتالي:
كود :
begin if (Key in ['0'..'9', #8]) then begin Key := #0; Beep; end; end;
وبالتوفــــــيق للجميع ...
الرد
#2
ماذا يعني #8 ؟
الرد
#3

بسم الله الرحمن الرحيم
metal كتب :ماذا يعني #8 ؟
المفتاح رقم 8 من لوحة المفاتيح Keyboard
وهو المفتاح DEL للحذف يسارا
والسلام عليكم ورحمة الله
الرد
#4
ممتاز, اذا استطيع جعلها تدعم الفاصلة ايضا:

كود :
begin if not (Key in ['0'..'9', #8, '.']) then begin Key := #0; Beep; end; end;
الرد
#5
السلام عليكم

metal كتب :ممتاز, اذا استطيع جعلها تدعم الفاصلة ايضا:

من الأحسن ان يكون كالآتي

كود :
if not (Key in ['0'..'9', #8, DecimalSeparator]) then begin Key := #0; Beep; end;

الحكمة من ذلك هو أنك لا تعلم هل '.' أم ',' هي المستعملة من طرف النظام كتعبير عن الفاصلة

تحياتي Smile
الرد
#6
بهذه الافكار الجميلة وقراءت كل الاحتمالات تجعل الكود صغير و فعال
الله يبارك فيك اخي delphi4ever
وصلت الفكرة
الرد
#7
بكل بساطة الكود يقوم بالبحث في مجموعة الحروف ['0'..'9', #8, DecimalSeparator] و التي تمثل الارقام و الفاصلة و كود زر DEL في حالة عدم وجود الزر في تلك المجموعة فانه لا يظهر الحرف على TEdit بتعويضه ب NULL = #0
الرد
#8
السلام عليكم
بارك الله فيك ,,
ما وظيفة الدآلة beeb ?
وشكرا مرة أخرىا
شكوت إلى وكيع سوء حفظي ... فأرشدني إلى ترك المعاصي
وأخــبـرنـي بــأن الـعـلـم نـور ... ونـور الله لا يـهدى لـعـاصي
الرد
#9
الدالة beep تعطيك صوت في الوندوز يشير الى حدوث عملية ممنوعة
لاحظ انه يختلف عن الصوت الناتج عم خطأ في النظام بل يشبه نوها ما ضوت رمي ابرة Smile
الرد
#10
تحتاج دالة الـ Beep بارامتران (التوتر + زمن التنفيذ) ونجد هده الدالة في : KERNEL32.DLL فقط تستطيع أن تسدعيها

و ترى بنفسك أحسن !! .
I'M Fly Like A G6

الرد


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


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