![]() |
|
اضافة مسافات معلومة بحسب طول الجملة - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : اضافة مسافات معلومة بحسب طول الجملة (/showthread.php?tid=11764) |
اضافة مسافات معلومة بحسب طول الجملة - Delphi4Us - 16-01-2022 السلام عليكم عند اضافة نصوص الى الاداة كومبوبكس مثلا تكون مثل : طابعة ليزرية - 1500 دينار معالج سيلرون 3000 - 800 دينار محول كهرباء - 150 دينار فكما تلاحظون كل جملة لها طول مختلف وغير متساوية المطلوب جعلها بشكل متساوي مثل طابعة ليزرية - 1500 دينار معالج سيلرون 3000 - 800 دينار محول كهرباء - 150 دينار طبعا وجدت حل وكان طويل نوعا ما وهو بحساب طول الكلمات واضافة فراغات بحسب المسافة المطلوبة ولكني اذكر ان هناك دالة تقوم بذلك اسمها على ما اعتقد Lcrlf او SpaceCtrl او شئ كهذا والشيخ قوقل يرفظ ان يعطي اي نتيجة RE: اضافة مسافات معلومة بحسب طول الجملة - wadoud - 16-01-2022 (16-01-2022, 09:09 PM)Delphi4Us كتب : السلام عليكمالسلا عليكم جرب هذا لعله ينفع كود : 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_LEFT TA_TOP الخ وفقكم الله RE: اضافة مسافات معلومة بحسب طول الجملة - Delphi4Us - 17-01-2022 لا انه لا يعمل وعلى العموم هذا ينفع في حالة مثلا اذا كانت الاداة لا تدعم الكتابة من اليمين لليسار المشكلة ليست في تغيير موضع الكتابة وانما فصل السعر عن الصنف بفراغات متساوية RE: اضافة مسافات معلومة بحسب طول الجملة - larbiparadox - 17-01-2022 - بواسطة الدلفي أستعمل 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.pdfRE: اضافة مسافات معلومة بحسب طول الجملة - S.FATEH - 17-01-2022 السلام عليكم او باستخدام الدالة Format RE: اضافة مسافات معلومة بحسب طول الجملة - Delphi4Us - 18-01-2022 شكرا على هذه المعلومة ولكن يبدو ان المشكلة اكبر من هذا فنحن العرب حياتنا معقدة اكثر من الغرب في كل شئ . الدالة StringOfChar جيدة تذكرني بواحدة اسمها Space(Number) لا اعرف هل هي في الدلفي ام لا . مشكلة لغتنا ان حروفنا غير متساوية العرض فكما بالشكال التالي نلاحظ ان الحرف س اعرض من الحرف ر ولو استخدمنا المسافات فلن تكون النتيجة متساوية حتى في الانجليزية هناك فارق بسيط كما بتعبئة الاداة الى اليسار بعلامة - ولكن عند التعبئة بي 0 كما بناحية اليمين كانت النتيجة متساوية ولكن لو ازلنا الحرف A وكتبنا جمل حتى بالانجليزية سيظهر السعر احيانا متقدم واحيانا متأخر ولهذا سوف احاول مع قاعدة البيانات او استخدام الدالة TextWidth فهي تعود بعرض الجملة مهما كانت الحروف مختلفة RE: اضافة مسافات معلومة بحسب طول الجملة - sofiane201 - 18-01-2022 أخ Delphi4Us أين تريد إظهار النص؟ إذا كان ذلك في التقرير فالفاستريبورت يساعدك على تنسيق الكتابة, أما في الأماكن الأخرى كTLabel والمكونات المرئية فالحل في رأيي هو أن تعزل الكلمات, فقط في سبيل المثال, عندك 3 TLabel واحدة لاسم المنتج وطولها ثابت أكبر من اسم المنتج, وبعدها في مكان ثابت آخر TLabel للفاصلة "-" ثم الأخيرة للسعر وتأكد أن طول كل واحدة ثابت وبمكان ثابت. RE: اضافة مسافات معلومة بحسب طول الجملة - Delphi4Us - 18-01-2022 اخ سفيان انا استخدم الامر For لتعبئة الاداة المنسدلة كما بالشكل التالي لم يعجبني تقدم وتاخر السعر . جربت الطريقة التي قلت عليها بالدالة RPAD في قاعدة البيانات نفسها بحيث تاتي البيانات مضبوطة من هناك النتيجة كانت مرضية وافضل من الشكل الحالة للقائمة ولكن فقط لو جعلت السعر هو الاول لان الارقام يمكن ضبطها والاصناف حتى لو تقدمت وتأخرت بعد السعر تعطي شكل لائق للقائمة وشكرا مرة اخرى على المعلومة والدالة التي لم اكن اعرفها |