السلام عليكم ورحمة الله
اخواني الكرام...
اليوم وانا احاول ان اعمل برنامح يظهر مسج عند الضغط على اي حرف في الكيبورد...
ولكن لا ادري ما المشكلة حقيقاّ...
الكود الذي احاول استخدامه هو
PHP كود :
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = a..z then
begin
showmessage('it is a : letter!');8
end;
end;
ولكن الخطأ يظهر في الكود التالي...
وأعتقد ان الخطأ من a..z والله اعلم..
ولكن لا ادري في الحقيقة بظبط ما الخطأ...
بارك الله فيكم والسلام عليكم ورحمة الله و بركاته..
نعم اخي بارك الله فيكم...
شكرا كثيرا...
الكود صحيح..
وجربته الآن...
شكرا مرة ثانية..
وبارك الله فيكم والسلام عليكم
DeltaAziz الضاهر انت خبير بجد !!
شكرا ً لك اخي الكريم وكثر الله من امثالكم
في الحقيقة المنتدى جميل جدا ً و اول منتدى عربي اراه يعمل دروس دلفي بالفيديو لأفادة الناس
بارك الله فيكم
نعم اخواني بارك الله فيكم...
بخصوص... اخي touhami فملاحظتك مهمة للغاية ... وبارك الله فيك على تذكيرك لي بها...
اما هنا سؤال...
اذا اردت انا انه مثلا عند الضغط على اي زر في الكيبورد يكون حرفا فسيتم اظهار
showmessage الى المستخدم...
هل يعتبر هذا الكود الذي وشعته صحيح اخي ؟
PHP كود :
if( key in ['a'..'z'] ) and ( key in ['A'..'Z'] )
ألا يجب استخدام الكلمة or بدل من استخدام كلمة and ؟
لأن عند استخدام ال and يجب ان يتحقق كلا الشرطين...
اليس كذلك؟:eek:
اعتقد انني شاهدت هذا في الدورة ان لك اكن مخطئا ؟
نعم... هذا اولا...
ثانيا...
اخي ديلتها عزيز
الأولى واضحة بنسبة لي...
اما الثانية فشوي معقدة :eek:
يعني ماذا يفعل
هو للأحرف الكبار ؟
طيب ما هو العكس ؟
ثانيا ما فائدة الكود
ان كان هناك يوجد
التي تشير الى احرف كبار؟
بارك الله لك
moh__ كتب :يعني ماذا يفعل هو للأحرف الكبار ؟
هذا ما فهمته من ما أشار إليه الأخ
DeltaAziz
PHP كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if UpCase(key) in ['a'..'z','A'..'Z'] then
begin
showmessage(''+UpCase(key));
end;
medreg كتب :هذا ما فهمته من ما أشار إليه الأخ deltaaziz
PHP كود :
procedure tform1.edit1keypress(sender: Tobject; var key: Char);
begin
if upcase(key) in ['a'..'z','a'..'z'] then
begin
showmessage(''+upcase(key));
end;
وحسب إجتهادي من ما فهمت منكم الميساج يظهر حسب حالة الحرف
كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if UpCase(key)in ['a'..'z','A'..'Z'] then
begin
showmessage(key);
end else
if UpCase(key) in['ي'..'أ','ا']then
begin
showmessage(key);
end;
end;
moh__ كتب :هل يعتبر هذا الكود الذي وشعته صحيح اخي ؟
PHP كود :
if( key in ['a'..'z'] ) and ( key in ['A'..'Z'] )
ألا يجب استخدام الكلمة or بدل من استخدام كلمة and ؟
لأن عند استخدام ال and يجب ان يتحقق كلا الشرطين...
أولا: معك حق أخي هذا الكود هو لشرط يتحقق إذا تم الضغط على أحد الأحرف الصغيرة
وفي نفس الوقت أحد الأحرف الكبيرة وهذا لا يمكن أن يتحقق؟؟؟
والصواب أن يكتب:
PHP كود :
if( key in ['a'..'z'] ) or ( key in ['A'..'Z'] ) then
ثانيا: لقد قدم الأخ المشرف الكود المختصر وهو الذي أراه مناسبا:
PHP كود :
if UpCase(key) in ['A'..'Z'] then
ShowMessage('it is a : '+key);
moh__ كتب :اما الثانية فشوي معقدة :eek:
يعني ماذا يفعل هو للأحرف الكبار ؟
طيب ما هو العكس ؟
تستعمل UpCase لتحويل الحرف (Char) إلى حرف كبير، وهناك دوال كثيرة مشابهة لها.
والعكس هو LowerCase لكنها تستعمل مع العبارات النصية (String) وبالتالي يكون استعمالها كما يلي:
PHP كود :
if pchar(LowerCase(key))^ in ['a'..'z'] then
ShowMessage('it is a : '+key);
والنتيجة هي نفسها.
moh__ كتب :ثانيا ما فائدة الكود ان كان هناك يوجد التي تشير الى احرف كبار؟
طبعا لا فائدة منها، فإذا استعملت UpCase يمكنك الاستغناء عن الشرط الثاني.
.
moh__ كتب :نعم اخواني بارك الله فيكم...
اذا اردت انا انه مثلا عند الضغط على اي زر في الكيبورد يكون حرفا فسيتم اظهار
showmessage الى المستخدم...
وإذا أردت إدراج الرموز (مثل: ~#/*-+$^ù*...)، إليك هذا الكود:
PHP كود :
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) then
ShowMessage('it is a : '+key);
end;
وإذا أردت كل الحالات السابقة، استعمل هذا الكود:
PHP كود :
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
case UpCase(key) of
'A'..'Z': ShowMessage(key + ' is a letter');
'0'..'9': ShowMessage(key+' is a Number');
else ShowMessage(key+' is a Symbole');
end;
end;
والسلام عليكم.