كيف يمكنني تغيير الفاصل العشري برمجيًا
#1
السلام عليكم ورحمة الله تعالى وبركاته
كيف يمكنني تيير الفاصل العشري للمبالغ
المبلغ يظهر على هذا الشكل 999,999,999.99
كيف يظهر بهذا الشكل : 999.999.999,99
برمجيًا من دون اللجوء الى التغيير في الإعدادات الإقليمية للويندوز
ظهور النتيجة في DBGrid و QuickRepot
وجزاكم الله عنا كل خير
الرد
#2
وأخيرًا حلت المشكلة والحمد لله وجزاكم الله عنا كل خير
PHP كود :
procedure TForm2.FormCreate(Sender: TObject);
begin
decimalseparator
:=',';
thousandseparator:='.';
end; 
الرد
#3
طالع هذا الموضوع يمكن يفيدك أكثر:
http://www.delphi4arab.net/forum/showthread.php?tid=992
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#4
شكرً جزيلاً على الرابط لكن هنا مشكل لم يكن في الحسبان
PHP كود :
Decimalseparator:=',';
thousandseparator:='.';
currencystring:=''; 
عندما يكون للحقل من نوع Numerique
عندما وضعت في الحدث OnCreate الثلاث سطور المبينة اعلاه في الحقيقة يعمل بشكل جيد لكن هناك امر لم يكن في الحسبان
وهو الزر الموجود في لوحة المفاتيح والذي يحمل إشارة الفاصلة والنقطة والحذف
عندما تكتب مبلغ او رقم وتريد ان تستخدمه لوضع الفاصلة لا يعمل وهذه المشكلة لاحظتها من قبل عندما تغير في الإعدادت الإقليمية وتضع الفاصلة في مكان النقطة لايعمل وهذ الأ في البرامج التي يتم تثبيتها من خلال المستعمل كهذه البرامج التي ننشأها بالدلفي
اما إذا كانت الإعدادات الإقليمية إفتراضية واقصد الفاصلة لللآف والنقطة للعشري فإن هذا الزر يعمل جيد عندما تستعمله للفاصل العشري ليضع نقطة للفاصل العشري ونفس الشيئ البرامج هذه ان كان افتراضي تستطيع ان تستعمله وان كان اختياري كالسالف الذكر لا تستطيع استعماله
أما إذا كان للحقل من نوع $
لم اجد اي زر يقبل ان تستعمله فاصة
حتى الزر الذي يحمل إشارة الفاصلة وإشارة علامة الإستفهام
علما ان لوحة المفاتيح في وضع FR
ولم يبقى أمامي غير الزر السالف الذكر الموجود يمين لوحة المفاتيح
هذا الزر يعمل لكن يعطيك رسالة خطأ وهي هذه الرسالة
[صورة: errorb.gif]
نرجوا إن كان هناك حل لهذه المشكلة افيدونا به وجزاكم الله عنا كل خير
الرد
#5
يبدو أن الأمور لم تتضح جيدا...
رمز فاصلة الأعداد في النظام محدد مسبقا
مثلا لو حددت الفاصلة في النظام هي الرمز ,
وكتبت رقم 1.2 فستشاهد حتما مثل هذا الخطأ
لكن إذا كتبت قبل ذلك:
كود :
DecimalSeparator := '.';
وهذا معناه أن رمز فاصلة الأعداد في برنامج (بعد تحديده) يختلف عنه في النظام
وبالتالي فلن يحدث الخطأ.
يبقى شيء وهو إذا أردت أن تحافظ على رمز فاصلة النظام (يعني تستعمل نفس رمز النظام)
يمكن تغيره يدويا في الحدث OnKeyPress بشيء مثل:
كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if Key = '.' then Key := ','; end;
وبالتالي إذا ضغط المستعمل على . فسيشاهد , عوضا عنها
وهكذا لن تحتاج إلى تغير DecimalSeparator .
ملاحظة: المتغير DecimalSeparator يمكن قراءته وفحصه كما يمكن تغيره أيضا.
راجع سؤال أخونا نبيل أيضا للاستزادة:
http://www.delphi4arab.net/forum/showthr...p?tid=1770
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد


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


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