كيفية إجبار مكون edit على قبول space و del
#1
السلام عليكم
كود :
;if not (Key in ['a'..'z','0'..'9','''',#8, #13]) then Key:=#0

أود جعل الأداة تقبل space و del

كما أود الحصول على قائمة بهذه الرموز و وظائفها
#8, #13
الرد
#2
السلام عليكم...

أولاً العلامة الرقمية # يتبعها عدد هي طريقة دلفي لكتابة الرموز باستعمال أرقامها في جدول آسكي (ASCII Table). و هي مفيدة خاصةً في التعبير عن الرموز غير المكتوبة (غير القابلة للكتابة أو ما يسمى برموز التحكم - Control characters، و هي الرموز التي تحتل الأرقام من 0 إلى 31 في جدول آسكي) مثل:
كود :
#8 = BackSpace #9 = Tab #13#10 = Enter
و يمكن أيضاً استعمالها لكتابة سلاسل نصية (String). مثلاً:
كود :
Label1.Caption := #65#108#105; // => Ali (#65 = A, #108 = l, #105 = i)

ثانياً بالنسبة إلى الكود المطلوب، استعمل الطريقة التالية حيث يمكنك وضع أية رموز تريد استثناءها (السماح بكتابتها) الكود يوضع طبعاً في الحدث OnKeyPress للمكون TEdit أو ما يشبهه:
كود :
if Key > #31 then begin if not (Key in ['a'..'z', 'A'..'Z', '0'..'9', ' ']) then Key := #0; end;

الكود السابق يسمح بكتابة الحروف اللاتينية من a إلى z (صغيرة أو كبيرة) و الأرقام و الفراغ (لاحظ أن علامتي التنصيص أو الاقتباس الأخيرتين تحتويان بينهما فراغا و ليستا ملتصقتين).

لاحظ أن جملة if الأولى ستستثني رموز التحكم (التي أرقامها من 0 إلى 31) أي أنها ستسمح بمفتاح المسح الخلفي (BackSpace) و مفتاح الحذف (Delete) و مفتاح الإدخال (Enter) و مفتاح الجدولة (Tab) و غيرها.

أخيراً، إذا أردت السماح بكتابة علامة التنصيص أو الاقتباس الفردية ( ' ) فإنه يجب مضاعفتها لأنها تستعمل لحصر الرموز، أو أن تستعمل رقمها في جدول آسكي:
كود :
''' // خطأ '''' // صحيح #39 // صحيح

كود :
if Key > #31 then begin if not (Key in ['a'..'z', 'A'..'Z', '0'..'9', ' ', #39]) then Key := #0; end;

* للحصول على جدول ASCII ابحث في Google و ستجد آلاف النتائج.

نرجو الاستفادة و السلام.
الرد
#3
شكرا جزيلا أخي Najy Ibraheem ....إجابتك كافية و وافية...جعلها الله في ميزان حسناتك...
الرد


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


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