delphi4arab منتديات دلفي للعرب

نسخة كاملة : منع المكون TEdit قبول الحروف!
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3

delphi4ever

السلام عليكم ورحمة الله
هذا مثال في دلفي عن منع المكون 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;
وبالتوفــــــيق للجميع ...
ماذا يعني #8 ؟

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

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

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

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

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

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

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

و ترى بنفسك أحسن !! .
الصفحات : 1 2 3