التحكم في كتابة الحروف عن الحدث Edit1KeyPress يعمل مع دلفي 7 ولا يعمل مع 2010 ؟؟
#1
السلام عليكم ورحمة الله وبركاته

من موضوع الاستاذ نبيل هــــــنا بند رقم 19



الموضوع خاص بالتحكم في المفاتيح المتاحه للكتابه في ال Edit إما ارقام وإما احرف انجليزيه كبيره او صغيره ..

انا حاولت ان استخدم الكود لإجبار ال Edit على قبول الاحرف العربيه فقط

استخدمت هذا الكود
كود :
if not(Key in ['أ'..'ى', #8]) then begin Key := #0; Beep;
لكن يوجد مفتاحين لم يعملوا هما حرف ال ي وحرف ء

عدلته ل
كود :
if not(Key in ['أ'..'ي', #8]) then begin Key := #0; Beep;

حرف ي يعمل ولكن حرف ء مازال لا يعمل

استخدمت
كود :
if not(Key in ['ء'..'ي', #8]) then begin Key := #0; Beep;

عملت كل المفاتيح العربيه ولكن بقي مفتاح المسافه

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

الان كل المفاتيح تعمل ومسطرة المسافه تعمل ايضا ولكن دلفي 2010 لا يقبل الكود

فما السبب ؟

المحاولات مرفقه


الملفات المرفقة
.rar   Edit.rar (الحجم : 7.07 ك ب / التحميلات : 18)
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
الرد
#2
إقتباس :يعمل مع دلفي 7 ولا يعمل مع 2010 ؟
انتبه لتعريف المتغير Key في كل من دلفي 7 و 2010 هل هو نفسه !
الرد
#3
لا اعلم مكانه

ولكن في قسم ال Type الاصدارين متشابهين تماما

2010

كود :
type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Edit1Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Edit1Change(Sender: TObject); begin end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not(Key in ['ء'..'ي',' ', #8]) then begin Key := #0; Beep; end; end; end.


دلفي 7
كود :
type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not(Key in ['Á'..'í',' ', #8]) then begin Key := #0; Beep; end; end; end.
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
الرد
#4
- نفذ هذا الكود في الـ Delphi 7 & Delphi 2010 و لاحظ الفرق :
PHP كود :
{$IF CompilerVersion >= 20}
 Const
  
Tmp = '65536 character';
{
$Else}
Const
  
Tmp= '256 character';
{
$IFEnd}

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessageFmt
('Size Of Char Type : %d Byte, ' + Tmp
      
,[SizeOf(Char)]);
end; 
بالتوفيق,,
I'M Fly Like A G6

الرد
#5
هناك أيضا توجيه Unicode لإصدارات دلفي الداعمة لذلك:
PHP كود :
{$IFDEF Unicode}
  
ShowMessage('Unicode, Char Size = '+IntToStr(SizeOf(Char))+' bytes.');
{
$ELSE}
  
ShowMessage('ANSI, Char Size = '+IntToStr(SizeOf(Char))+' byte.');
{
$ENDIF} 
الأخ ELARAPY هناك فرق بين Char في إصدارات دلفي (2009 فما فوق) الداعمة لـ Unicode
و Char في إصدارات دلفي (2007 وما تحت) غير الداعمة للـ Unicode أي ANSI فقط.
للاستزادة:
http://www.delphi4arab.net/forum/showthr...p?tid=2144
بالتوفيق.
الرد
#6
TF6M كتب :- نفذ هذا الكود في الـ Delphi 7 & Delphi 2010 و لاحظ الفرق :
بعد التجربه الرسائل مختلفه
دلفي 7
Size Of Char Type : 1 Byt, 256 Character
دلفي 2010
Size Of Char Type : 2 Byt, 65536 Character
ما فهمته هو وجود اختلاف في الكومبايلر حسب الكود اللي حضرتك وضعته
لكن ما لم افهمه هو من اين اعرف مثل هذه الاكواد من حيث الاصدارات حتى استخدم مثل هذا الكود
بمعنى حضرتك حددت فرجن 20 وبنيت عليه القاعده
مين اين اتيت برقم الفرجن 20 وما السبب الذي يجعل الكوبايلر لا يقوم بمعالجه كود لكومايلر اخر ؟
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
الرد
#7
هذه موجهات المترجم Compiler Directives أو Preprocessor directives كما يسميها البعض
هدفها تغيير سلوك المترجم حسب الكود
هناك قيم معرفة مسبقا في دلفي منها، قيمة لمعرفة الإصدار:
PHP كود :
The following standard conditional symbols tell you which compiler is used:

VER80   Delphi 1.x
VER90   Delphi 2.x
VER93   C
++ Builder 1.0
VER100  Delphi 3.x
VER120  Delphi 4.x
VER130  Delphi 5.x
VER140  Delphi 6.x
VER150 Delphi 7.x
VER180 Delphi 10.x
VER185 Delphi 11.x 
(2007)
VER200 Delphi 12.x (2009)
VER210 Delphi 14.x (2010)
VER220 Delphi XE (aka 2011) 
لمحة أخرى هنا:
http://www.delphi4arab.net/forum/showthr...p?tid=1782
بالتوفيق.
الرد
#8
- بالإظافة الى ما ذكر : راجع هذه المشاركة[صورة: icon14.gif]
- الهدف من المثال توضيح الحجم المحجوز للنوع Char في كلا الإصدارين .
I'M Fly Like A G6

الرد
#9
لا أعلم ماذا أقول والشكر غير كافي

أفادكم الله
قل إن صلاتي ونسكي ومحياي ومماتي لله رب العالمين
الرد


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


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