delphi4arab منتديات دلفي للعرب
إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress (/showthread.php?tid=6419)

الصفحات: 1 2


إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - SamirAloui - 02-09-2014

السلام عليكم ورحمة الله تعالى وبركاته

انا بصدد عمل تطبيق موبيل انصدمت بعدم توفر دالة OnKeyPress في المكون Edit مثل الموجودة في تطبيقات سطح المكتب

يجب علي جعل ال Edit لا يقبل إلا الأرقام من 0 الى 9 وايضا علامة الفاصلة ',' و عند إدخال النقطة '.' تنتج مباشرة فاصلة هذا من أجل الأعداد الحقيقية ( ولو توفرت طريقة أخرى لحل مشكل النقطة فهذا افضل )

هذا الكود الذي كتت استخدمه في تطبيقات سطح المكتب في الاجراء OnKeyPress الخاص بال Edit نضع

كود :
if Key = #46 then // عند إدخال النقطة Key := #44; // يتم تحويل النقطة إلى فاصلة if not (Key in [#8,'0'..'9',',']) then Key := #0;


اضن ان في تطبيقات الموبيل يوجد اجراء بديل للاجراء OnKeyPress لذا قمت بعمل هذه الصورة التي تمثل الإجراءات الممكنة مع ال Edit

[صورة: 9aaa1jH.png]

و إذا كانت فيه طريقة اخرى بإستخدام الدالة OnKeyDown فلا تبخلو عنا و جزاكم الله خيرا


إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - S.FATEH - 02-09-2014

السلام عليكم جرب هذا الكود ربما يساعدك
PHP كود :
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
  
Shift: TShiftState);
begin
  
if Key = vkPeriod then Key := vkComma else
  if 
not(CharInSet(Key, [#8, '0'..'9', ',']))
   
then Key := 0;
end; 



إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - SamirAloui - 03-09-2014

s.fateh كتب :السلام عليكم جرب هذا الكود ربما يساعدك
PHP كود :
procedure tform1.edit1keydown(sender: Tobject; var key: Word; var keychar: Char;
  
shift: Tshiftstate);
begin
  
if key = vkperiod then key := vkcomma else
  if 
not(charinset(key, [#8, '0'..'9', ',']))
   
then key := 0;
end; 

و عليكم السلام

قمت بتجريبه لكن لا يشتغل للأسف


إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - Agmcz - 03-09-2014

توجد هده الخاصية في الإصدارات الأخيرة
PHP كود :
Edit1.NumbersOnly := True; 
تغني عن الحدث keypress Big Grin


إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - SamirAloui - 03-09-2014

ghost-dz كتب :توجد هده الخاصية في الإصدارات الأخيرة
PHP كود :
Edit1.NumbersOnly := True; 
تغني عن الحدث keypress Big Grin

مرحبا اخي لم أجد هذه الخاصية و لما كتبت الكود نتج عنه خطأ

ال Edit لا يعرف هذه الدالة NumbersOnly

صورة

[صورة: O6LmgoZ.png]


إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - Agmcz - 03-09-2014

عموما في XE6 موجودة ولا اعرف الإصدارات السابقة

دعم الإصدارات السابقة Big Grin
PHP كود :
procedure SetNumbersOnly(Edit: TEdit; Value: Boolean);
begin
  
if Value then
    SetWindowLong
(Edit.Handle, GWL_STYLE, GetWindowLong(Edit.Handle, GWL_STYLE)
      or 
ES_NUMBER)
  else
    
SetWindowLong(Edit.Handle, GWL_STYLE, GetWindowLong(Edit.Handle, GWL_STYLE)
      and 
not ES_NUMBER);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetNumbersOnly
(Edit1, True);
end; 



إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - SamirAloui - 03-09-2014

جزاك الله حيرا اخي على المتابعة

انا اعمل على آخر اصدار delphi xe6 لكني لم اجد تلك الحاصية :confused:

المهم جربت الإجراء الذي كتبه ممكن المكتبات التي اضيفها في uses حتى يعمل لأنو لم يتعرف على

تلك الدوال

صورة

[صورة: 5xK1EdB.png]


إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - Agmcz - 03-09-2014

كل الدي وضعته هو على VCL Forms
اما خارجه شيء آخر


إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - SamirAloui - 03-09-2014

عرف لمذا لم اجد تلك الخاصية في Edit انا اعمل على firemonkey و ليس vcl


إجبار Edit على كتابة الأرقام فقط من دون دالة OnKeyPress - SamirAloui - 08-09-2014

وجدت الحل و هو باستخدام المكون NumberBox الجاهز للأعداد فقط على منصة firemonkey

شكرا للجميع و اتمنى لكم الاستفادة