السلام عليكم
عند اضافة نصوص الى الاداة كومبوبكس مثلا تكون مثل :
طابعة ليزرية - 1500 دينار
معالج سيلرون 3000 - 800 دينار
محول كهرباء - 150 دينار
فكما تلاحظون كل جملة لها طول مختلف وغير متساوية
المطلوب جعلها بشكل متساوي مثل
طابعة ليزرية - 1500 دينار
معالج سيلرون 3000 - 800 دينار
محول كهرباء - 150 دينار
طبعا وجدت حل وكان طويل نوعا ما وهو بحساب طول الكلمات واضافة فراغات بحسب المسافة المطلوبة ولكني اذكر ان هناك دالة تقوم بذلك
اسمها على ما اعتقد Lcrlf او SpaceCtrl او شئ كهذا
والشيخ قوقل يرفظ ان يعطي اي نتيجة
لا انه لا يعمل
وعلى العموم هذا ينفع في حالة مثلا اذا كانت الاداة لا تدعم الكتابة من اليمين لليسار
المشكلة ليست في تغيير موضع الكتابة وانما فصل السعر عن الصنف بفراغات متساوية
- بواسطة الدلفي أستعمل StringOfChar
مثال
كود :
edit1.Text := StringOfChar('0',18-length('11111'))
- بواسطة SQL لـ Firebird أنا أستعمل RPAD
مثال من برنامج
الكود مثال من أحد برامجي
كود :
with DataModule1.FDQuery1 do begin
sql.clear;
sql.add('select ID_CLIENT, ');
sql.add('RPAD(F_Name || '' '' || L_Name ,45, '' '') || COMPTE as Name_COMPTE');
sql.add(' from "TABLE06_CLIENT" ');
sql.add(' where PR = ''y'' ');
sql.add('Order by F_Name');
Open ;
end;
يوجد أيضا lpad لكن النتيجة على اليسار ، نفرق بينهما من حرف الاول L و R معروفة للكل
أو حمل firebird-30-language-reference.pdf الصفحة 424 و 432
كود :
https://firebirdsql.org/file/documentation/pdf/en/refdocs/fblangref30/firebird-30-language-reference.pdf
السلام عليكم
او باستخدام الدالة Format
شكرا على هذه المعلومة
ولكن يبدو ان المشكلة اكبر من هذا فنحن العرب حياتنا معقدة اكثر من الغرب في كل شئ .
الدالة StringOfChar جيدة تذكرني بواحدة اسمها Space(Number) لا اعرف هل هي في الدلفي ام لا .
مشكلة لغتنا ان حروفنا غير متساوية العرض فكما بالشكال التالي
نلاحظ ان الحرف س اعرض من الحرف ر
ولو استخدمنا المسافات فلن تكون النتيجة متساوية
حتى في الانجليزية هناك فارق بسيط كما بتعبئة الاداة الى اليسار بعلامة -
ولكن عند التعبئة بي 0 كما بناحية اليمين كانت النتيجة متساوية ولكن لو ازلنا الحرف A وكتبنا جمل حتى بالانجليزية سيظهر السعر احيانا متقدم واحيانا متأخر
ولهذا سوف احاول مع قاعدة البيانات
او استخدام الدالة TextWidth فهي تعود بعرض الجملة مهما كانت الحروف مختلفة
أخ Delphi4Us أين تريد إظهار النص؟ إذا كان ذلك في التقرير فالفاستريبورت يساعدك على تنسيق الكتابة, أما في الأماكن الأخرى كTLabel والمكونات المرئية فالحل في رأيي هو أن تعزل الكلمات, فقط في سبيل المثال, عندك 3 TLabel واحدة لاسم المنتج وطولها ثابت أكبر من اسم المنتج, وبعدها في مكان ثابت آخر TLabel للفاصلة "-" ثم الأخيرة للسعر وتأكد أن طول كل واحدة ثابت وبمكان ثابت.
اخ سفيان انا استخدم الامر For لتعبئة الاداة المنسدلة كما بالشكل التالي
لم يعجبني تقدم وتاخر السعر .
جربت الطريقة التي قلت عليها بالدالة RPAD في قاعدة البيانات نفسها بحيث تاتي البيانات مضبوطة من هناك
النتيجة كانت مرضية وافضل من الشكل الحالة للقائمة ولكن فقط لو جعلت السعر هو الاول لان الارقام يمكن ضبطها والاصناف حتى لو تقدمت وتأخرت بعد السعر تعطي شكل لائق للقائمة
وشكرا مرة اخرى على المعلومة والدالة التي لم اكن اعرفها