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

نسخة كاملة : الفاصل العشري
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
إذا أردت أن أعتمد عددين بعد الفاصلة للــ 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

رغم أنني اطلعت على هذه المشاركة إلا أني لم أستفد منها في حل الإشكال.
في البداية السلام عليكم
بالنسبة لاستعمال الدالة 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 لذلك وجب عليك التأكد من أن الحقل الموجود في الجدول ذو نوعية عددي و منه تحدد عدد الأرقام بعد الفاصل
و السلام.
شكرا على المســاعدة .
فيما يخص السؤال الأول :
إقتباس :لذلك وجب عليك التأكد من أن الحقل الموجود في الجدول ذو نوعية عددي و منه تحدد عدد الأرقام بعد الفاصل
كيف ذلك ؟ لأن هذا هو المطلوب أخي ، نحدد عدد الأرقام بعد الفاصلة في Edt مثلا ، بواسطة الدالة FormatFloat هذا معلوم و تم طرحه ، و لكن عند تخزين القيمة 3.10 بالجدول تعرض 3.1 بــ DBgrid
السلام عليكم
في الحقيقة لم أفهم المشكلة بالضبط
هذه بعض الملاحظات التي قد تفيدك:
- كما ذكر أخي 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
الاشكال يتمثل في :
جدول به حقل عددي ، نريد تخزين قيمة 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
كيف الحل (حفظ العدد برقمين بعد الفاصلة ) دون تغيير نوع الحقل (عددي) ؟
يعني لا داعي لكل ما سبق من الكلام حول np و تعريف np ، لا شيء من هذا القبيل سيحل المشكل.

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

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

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