delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف أجعل الــ Edit يقبل الأرقام بالفاصلة في عملية حسابية
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كيف أجعل الــ 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]
السلام عليكم
في الحدث onkeypress لجميع edit ضع الكود التالي
if key =('.') then
;(','):= key
او
if key =(.) then
;(,):= key
جرب هدا الكود واطيعنا ردا
الحل كان في
كود :
if key =('.') then key := (',');
جزاك الله خيرا أخي، و لكن مازالت هناك مشكلة أخرى و هي لما أمسح الـ Edit

[صورة: attachment.php?attachmentid=4206&stc=1&d=1386964716]
ما هو تفسير المشكلة السابقة لأتفادها مستقبلا ؟
RolleyesRolleyes
وجدت مكمن الخطأ و هو اعتبار الفراغ مجهول بالنسبة لــ 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;