كيف أجعل الــ Edit يقبل الأرقام بالفاصلة في عملية حسابية
#1
كيف أجعل الــ 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]


الملفات المرفقة
.jpg   SD.jpg (الحجم : 24.25 ك ب / التحميلات : 175)
لا إله إلا الله محمد رسول الله
الرد
#2
السلام عليكم
في الحدث onkeypress لجميع edit ضع الكود التالي
if key =('.') then
;(','):= key
او
if key =(.) then
;(,):= key
جرب هدا الكود واطيعنا ردا
الرد
#3
الحل كان في
كود :
if key =('.') then key := (',');
جزاك الله خيرا أخي، و لكن مازالت هناك مشكلة أخرى و هي لما أمسح الـ Edit

[صورة: attachment.php?attachmentid=4206&stc=1&d=1386964716]
ما هو تفسير المشكلة السابقة لأتفادها مستقبلا ؟
RolleyesRolleyes


الملفات المرفقة
.jpg   sd2.jpg (الحجم : 40.44 ك ب / التحميلات : 84)
لا إله إلا الله محمد رسول الله
الرد
#4
وجدت مكمن الخطأ و هو اعتبار الفراغ مجهول بالنسبة لــ 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 ;
لا إله إلا الله محمد رسول الله
الرد
#5
الحل هو ان لا تكون edit فارغة عند تنفيد الامر
جرب متلا في كل edit تستعملها ضع فيها رقم 0 فلا تخرج لك تلك الرسالة
الرد
#6
لكن في حالة تغيير اعدادات الأ رقام سوف تواجهك مشكلة اذا اعددنا الفاصلة "," عوضا عن "."
من الأحسن عندي استخدام مايلي:
كود :
var x:float; begin try x:=strtofoat(edit1.text); except begin showmessage('entrer N correct'); edit1.setfocus; edit1.selectall; end;
الرد
#7
يمكنك ان تقوم بجعل كود الحدث Onchange داخل بلوك TRY FINALLY ..
كود :
Try Begin /*Your code here */ End; Except Textedit1.Text="0"; end;
الحمد لله، الحمد لله، الحمد لله.
الرد


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


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