طبعا وجدت حل وكان طويل نوعا ما وهو بحساب طول الكلمات واضافة فراغات بحسب المسافة المطلوبة ولكني اذكر ان هناك دالة تقوم بذلك
اسمها على ما اعتقد Lcrlf او SpaceCtrl او شئ كهذا
والشيخ قوقل يرفظ ان يعطي اي نتيجة
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
طبعا وجدت حل وكان طويل نوعا ما وهو بحساب طول الكلمات واضافة فراغات بحسب المسافة المطلوبة ولكني اذكر ان هناك دالة تقوم بذلك
اسمها على ما اعتقد Lcrlf او SpaceCtrl او شئ كهذا
والشيخ قوقل يرفظ ان يعطي اي نتيجة
السلا عليكم
جرب هذا لعله ينفع
كود :
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TComboBox) do
begin
Canvas.FillRect(Rect);
SetTextAlign(Canvas.Handle, TA_RIGHT);
Canvas.TextOut(Rect.Right - 4, Rect.Top, Items[Index]);
end;
end;
TA_RIGHT
TA_LEFT
TA_TOP الخ
وفقكم الله
الخوف من أي محاولة جديدة طريق حتمي للفشل.
كل من 1 user says قال شكرا ل wadoud على المشاركة المفيدة1 user says Thank You to wadoud for this post • Delphi4Us
لا انه لا يعمل
وعلى العموم هذا ينفع في حالة مثلا اذا كانت الاداة لا تدعم الكتابة من اليمين لليسار
المشكلة ليست في تغيير موضع الكتابة وانما فصل السعر عن الصنف بفراغات متساوية
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
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
ولكن يبدو ان المشكلة اكبر من هذا فنحن العرب حياتنا معقدة اكثر من الغرب في كل شئ .
الدالة StringOfChar جيدة تذكرني بواحدة اسمها Space(Number) لا اعرف هل هي في الدلفي ام لا .
مشكلة لغتنا ان حروفنا غير متساوية العرض فكما بالشكال التالي
نلاحظ ان الحرف س اعرض من الحرف ر
ولو استخدمنا المسافات فلن تكون النتيجة متساوية
حتى في الانجليزية هناك فارق بسيط كما بتعبئة الاداة الى اليسار بعلامة -
ولكن عند التعبئة بي 0 كما بناحية اليمين كانت النتيجة متساوية ولكن لو ازلنا الحرف A وكتبنا جمل حتى بالانجليزية سيظهر السعر احيانا متقدم واحيانا متأخر
ولهذا سوف احاول مع قاعدة البيانات
او استخدام الدالة TextWidth فهي تعود بعرض الجملة مهما كانت الحروف مختلفة
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
أخ Delphi4Us أين تريد إظهار النص؟ إذا كان ذلك في التقرير فالفاستريبورت يساعدك على تنسيق الكتابة, أما في الأماكن الأخرى كTLabel والمكونات المرئية فالحل في رأيي هو أن تعزل الكلمات, فقط في سبيل المثال, عندك 3 TLabel واحدة لاسم المنتج وطولها ثابت أكبر من اسم المنتج, وبعدها في مكان ثابت آخر TLabel للفاصلة "-" ثم الأخيرة للسعر وتأكد أن طول كل واحدة ثابت وبمكان ثابت.
كل من 1 user says قال شكرا ل sofiane201 على المشاركة المفيدة1 user says Thank You to sofiane201 for this post • Delphi4Us
اخ سفيان انا استخدم الامر For لتعبئة الاداة المنسدلة كما بالشكل التالي
لم يعجبني تقدم وتاخر السعر .
جربت الطريقة التي قلت عليها بالدالة RPAD في قاعدة البيانات نفسها بحيث تاتي البيانات مضبوطة من هناك
النتيجة كانت مرضية وافضل من الشكل الحالة للقائمة ولكن فقط لو جعلت السعر هو الاول لان الارقام يمكن ضبطها والاصناف حتى لو تقدمت وتأخرت بعد السعر تعطي شكل لائق للقائمة
وشكرا مرة اخرى على المعلومة والدالة التي لم اكن اعرفها
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم