delphi4arab منتديات دلفي للعرب
الفاصل العشري - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : الفاصل العشري (/showthread.php?tid=1155)



الفاصل العشري - nabilkeb - 30-08-2009

إذا أردت أن أعتمد عددين بعد الفاصلة للــ Edt مثلا:
كود :
Edt.text:=formatfloat('0.00',strtofloat(Edt.text));
لديا جدول به حقل عددي يعرض في DBgrid ، يأخذ الحقل العددي قيمته من Edt ، بعددين بعد الفاصلة ، انطلاقا من الكود المذكور .
السؤال:
إذا كان الناتج مثلا 3.123 فإنه سيكون 3.12 ،أما إذا كان 3.10 فإنه يعرض في DBgrid على شكل 3.1
- كيف أجعله يعرض 3.10 ؟
- كيف ( أجمع الأعداد ) يعني أفرق بين كل 3 أرقام بفراغ مثلا: 1325874.12 يكون : 847.12 325 1

رغم أنني اطلعت على هذه المشاركة إلا أني لم أستفد منها في حل الإشكال.



الفاصل العشري - MjIrIm - 30-08-2009

في البداية السلام عليكم
بالنسبة لاستعمال الدالة FormatFloat
يكون المثال الأول كالاتي
كود :
Edit2.Text:= FormatFloat('0.00', StrToFloat(Edit1.Text));
و المثال الثاني
كود :
Edit2.Text:= FormatFloat('### ### ###.00', StrToFloat(Edit1.Text));

لمزيد من الأمثلة لكيفية استعمالها, يمكن زيارة هذا الرابط
كود :
hxxp://www.delphibasics.co.uk/RTL.asp?Name=FormatFloat

بالنسبة لك تتعامل مع DBGrid لذلك وجب عليك التأكد من أن الحقل الموجود في الجدول ذو نوعية عددي و منه تحدد عدد الأرقام بعد الفاصل
و السلام.



الفاصل العشري - nabilkeb - 31-08-2009

شكرا على المســاعدة .
فيما يخص السؤال الأول :
إقتباس :لذلك وجب عليك التأكد من أن الحقل الموجود في الجدول ذو نوعية عددي و منه تحدد عدد الأرقام بعد الفاصل
كيف ذلك ؟ لأن هذا هو المطلوب أخي ، نحدد عدد الأرقام بعد الفاصلة في Edt مثلا ، بواسطة الدالة FormatFloat هذا معلوم و تم طرحه ، و لكن عند تخزين القيمة 3.10 بالجدول تعرض 3.1 بــ DBgrid


الفاصل العشري - kachwahed - 02-09-2009

السلام عليكم
في الحقيقة لم أفهم المشكلة بالضبط
هذه بعض الملاحظات التي قد تفيدك:
- كما ذكر أخي MjIrIm يمكن كتابةرمز فاصل الآلاف بشكل أفضل:
كود :
Edit2.Text:= FormatFloat('#,##.0', StrToFloat(Edit1.Text));
وهكذا سيظهر بشكل عاد مهما كان طول العدد، ولتفادي مشكلة رمز فاصلا الآلاف يمكن تحديده في البداية:
كود :
ThousandSeparator := ' ';
- نصيحتي حاول استعمال DecimalSeparator بشكل ديناميكي لأن الرمز قد يتغير من مستعمل لآخر، أكتب شيء مثل:
كود :
Edit2.Text := '3'+DecimalSeparator+'1';
-أيضا راجع أمثلة Delphi:
كود :
Format string- 1234 -1234 0.5 0 1234 -1234 0.5 0 0 1234 -1234 1 0 0.00 1234.00 -1234.00 0.50 0.00 #.## 1234 -1234 .5 #,##0.00 1,234.00 -1,234.00 0.50 0.00 #,##0.00;(#,##0.00) 1,234.00 (1,234.00) 0.50 0.00 #,##0.00;;Zero 1,234.00 -1,234.00 0.50 Zero 0.000E+00 1.234E+03 -1.234E+03 5.000E-01 0.000E+00 #.###E-0 1.234E3 -1.234E3 5E-1 0E0



الفاصل العشري - nabilkeb - 02-09-2009

الاشكال يتمثل في :
جدول به حقل عددي ، نريد تخزين قيمة Edt بهذا الحقل على شكل عددين بعد الفاصلة+تفريق الأعداد بفراغ.
الغاية :
1- لتظهر بشكل مقروء و متعارف عليه1، في DbGrid
2-الطباعة (ِQrDBtext مربوط بالحقل )

و لكن مثالا حول الدالة FormatFloat تقدمت به ، و المثال نفسه المطروح تقدمت به أنا أولا ، لكي لا يغوص الأصدقاء هنا و هناك دون أن أنتفع أنا صاحب السؤال.

- نستطيع أن نكتب عدد معين برقمين بعد الفاصلة في Edit مثلا(FormatFloat) ، كذلك نستطيع تخزين قيمة الــ Edit في جدول (في حقل معين) كما هي إذا كان نوع الحقل نصي .
لكن إذا كان النوع عددي (مثل الذي عندي _ و هو المطلوب) و كانت قيمة Edit أولا 12 مثلا ، فستصبح 12.00 ثم تخزن في الجدول ، و لن تبق 12.00 بل ستصبح 12 ، لأن الحقل عددي : 12=12.00 .
و لو كانت مثلا 12.1 ، فستصبح 12.10 ثم تخزن 12.1
كيف الحل (حفظ العدد برقمين بعد الفاصلة ) دون تغيير نوع الحقل (عددي) ؟


الفاصل العشري - nabilkeb - 08-09-2009

يعني لا داعي لكل ما سبق من الكلام حول np و تعريف np ، لا شيء من هذا القبيل سيحل المشكل.

الحل : ببساطة : display format 00.00 للحقل اللعددي

هذا ينفع.


الفاصل العشري - amer mohamed - 10-06-2012

السلام عليكم
تحية للجميع
لم تفصل في الامر اخي nabilkeb كيف تستعمل هذه display format 00.00


الفاصل العشري - hamou1982 - 10-06-2012

السلام عليكم ورحمة الله تعالى وبركاته
اضغط على table1 بيمين الفأرة ثم بعذ ذلك الى editeur de champs
ثم بعد ذلك ادرج الحقول التابعة للجدول من قاعدة البيانات
وبعدها ضع المؤشر على الحقل العددي
بعدها الى خصائص الحقل في l'inspecteur d'objet
اذهب الى DisplayFormat
ضع هذا
كود :
##,##0.00
وا
كود :
## ##0.00
هذا لإظهار المبلغ كما طلبت في DBGrid وفي كل المكونات المتعلقة بقاعدة البيانات
وبالتوفيق


الفاصل العشري - format82 - 11-06-2012

إقتباس :2-الطباعة (ِQrDBtext مربوط بالحقل )
في الحدث من OnPrint اكتب الكود التالي

Value:=FormatFloat('0.00',StrToFloat(Value));