كيف أجعل الــ Edit يقبل الأرقام بالفاصلة علما أن الحقل الخاص به معرف كـ String في قاعدة البيانات استعملت الكود التالي:
كود :
var
n1 , n2 , sum : real ;
begin
n1:=StrTofloat(Edit2.Text);
n2:=StrTofloat(Edit8.Text);
sum:= n1 + (n1 * n2 / 100) ;
Edit3.Text:= floatToStr(sum);
;end
و مع ذلك تظهر رسالة الخطأ هذه، فهل من توضيح و جزاكم الله خيرا
![[صورة: attachment.php?attachmentid=4203&stc=1&d=1386951635]](http://www.delphi4arab.net/forum/attachment.php?attachmentid=4203&stc=1&d=1386951635)
السلام عليكم
في الحدث onkeypress لجميع edit ضع الكود التالي
if key =('.') then
;(','):= key
او
if key =(.) then
;(,):= key
جرب هدا الكود واطيعنا ردا
الحل كان في
كود :
if key =('.') then
key := (',');
جزاك الله خيرا أخي، و لكن مازالت هناك مشكلة أخرى و هي لما أمسح الـ Edit
![[صورة: attachment.php?attachmentid=4206&stc=1&d=1386964716]](http://www.delphi4arab.net/forum/attachment.php?attachmentid=4206&stc=1&d=1386964716)
ما هو تفسير المشكلة السابقة لأتفادها مستقبلا ؟


وجدت مكمن الخطأ و هو اعتبار الفراغ مجهول بالنسبة لــ Float و بعد تعديل الكود أصبح هكذا
كود :
n1 , n2 , sum : real ;
begin
if edit8.Text <> '' then
begin
n1:=StrToFloat(Edit2.Text);
n2:=StrToFloat(Edit8.Text);
sum:= n1 + (n1 * n2 / 100) ;
Edit3.Text:= floatToStr(sum);
end
else
exit ;
الحل هو ان لا تكون edit فارغة عند تنفيد الامر
جرب متلا في كل edit تستعملها ضع فيها رقم 0 فلا تخرج لك تلك الرسالة
لكن في حالة تغيير اعدادات الأ رقام سوف تواجهك مشكلة اذا اعددنا الفاصلة "," عوضا عن "."
من الأحسن عندي استخدام مايلي:
كود :
var x:float;
begin
try x:=strtofoat(edit1.text);
except
begin
showmessage('entrer N correct');
edit1.setfocus;
edit1.selectall;
end;
يمكنك ان تقوم بجعل كود الحدث Onchange داخل بلوك TRY FINALLY ..
كود :
Try
Begin
/*Your code here */
End;
Except Textedit1.Text="0";
end;