مشاهدة النسخة كاملة : هاااام توسيط الكتـــابة في ListBox
ثامر أبو بلقيس
06-08-2016, 04:39 AM
السلام عليكم ورحمة الله وبركاته
قد فتحت تســـاؤل سابق حول حساب المسافة الباقية
في سطور عنصر ListBox بعد التحديد لاستغلالها
في توسيط الكتابة في ListBox فأقترن ذلك بعدة مصاعب
نوع الخط و طول العنصر وووو ....
----------------------
أكرر انشــغالي بطرح مباشــر هل هناك طريقة أو إضافة
تساعدني في توسيط العناوين في عنصر ListBox1 بطريقة برمجية
تتلاءم مع حجم الخطوط و اختلافاتها و مع أبعاد العنصر في حد ذاته
-----------------------------
هل من أكواد ... أو إضافات .. أوأراء قد تفيد
أم لا يوجد أمل لتحقيق هذا الانشغـــال
شكــــرا :abc_138:
عبد الهادي بهاب
06-08-2016, 12:24 PM
السلام عليكم ورحمة الله وبركاته
نمر من هنا لنقول انني نحاول بما اوتينا من علم
فلا تلمنا ان لن نمر من جديد
فهذا يعني ان لا جديد
ثامر أبو بلقيس
06-08-2016, 12:59 PM
السلام عليكم ورحمة الله وبركاته
نمر من هنا لنقول انني نحاول بما اوتينا من علم
فلا تلمنا ان لن نمر من جديد
فهذا يعني ان لا جديد
موفق بإذن الله ... لك مني أجمل تحية .
عبد الهادي بهاب
06-08-2016, 02:09 PM
لا اظن ان الحل يخرج عن dll
عبد الهادي بهاب
06-08-2016, 02:18 PM
حاولت ان اضيف " " مسافة الى النص في اليسبوكس بحيث يصبح النص في اخر اليسبوكس ظاهريا
ثم نحسب الفراغ الموجود قبل النص و هو سهل ثم نقسمه على 2 ثم نستبدل نصف المسافات
لم انجح
...................
حاولت ان اضيف . امام كل نص ثم اضيف عدد من النقط بحيث يصبح النص في الوسط ظاهريا ثم نستبدل النقط بمسافات
لم انجح
....................
ثم قلت لما لا نعمل خارج اليسبوكس مثلا العريد فيمكن التوسيط
او نصدر محتوى الليسبوكس الى عنصر خارجي و ليكن richtext ثم نوسطه ثم نصدره الى تكتس ثم الى ليسبوكس اخر بحيث يحتفظ بالمسافات
و في الاخير قلت يا اخي اذا كان الامر شكلي بحيث يظهر للمستخدم ان النصوص في الوسط .... نضيف باراغراف كاطار خارجي لليسبوكس بحيث يظهر انه اطار اليسبوكس
ثم قررت في الاخير ان اترك هذا الامر و اتفرج توم جيري فهو يهدا البال و احسن للصحة :abc_052::abc_052::abc_052:
ثامر أبو بلقيس
06-08-2016, 02:23 PM
لا اظن ان الحل يخرج عن dll
لا أدري لكني أفكر في حل فيه سلبيات
و هي التأثير على طول العنوان لاحقا عند استعماله في
اجراءات أخرى كالبحث مثلا او حتى الاستعلام عليه لانه لن يصبح
ذلك العنوان بل ستضاف له مسافات بادئة مما يجر الى استعمال
String.TrimLeft للتعامل مع النص الحقيقــــي في حالة تطبيق
أكواد الليست المعروفة
أي بمعنى سيكون في البدء توسيط العناوين لكن بمسافة بادئة رياضيا
------------------------------
يمكن أن أواصل متابعة الانشغال ..... :abc_139:
ثامر أبو بلقيس
06-08-2016, 02:46 PM
حاولت ان اضيف " " مسافة الى النص في اليسبوكس بحيث يصبح النص في اخر اليسبوكس ظاهريا
ثم نحسب الفراغ الموجود قبل النص و هو سهل ثم نقسمه على 2 ثم نستبدل نصف المسافات
لم انجح
هذا تفكير سليم و قد يكون بداية لخوارزمية عمل جيدة
واصل بدء من هذه النقطة :abc_152:
ثامر أبو بلقيس
07-08-2016, 05:40 PM
خــوارزمية عمل :
01 - البحث عن العنصــر الذي يتمدد كلما كتبنا فيه ؟؟؟ هذا العنصر "س" هو الذي يحل المشكــل
نعطي لهذا العنصر مواصفات نفس خط الليستبوكس
02 - ننشأ دالة تكرارية دورها تكتب رقما أو حرفا واحد في كل مرة للعنصر "س"
03 - تتوقف الدالة عندما يكون طول العنصر "س" أكبر أو يساوي طول الليست بوكس و أقصد
هنا الــ Width
04 - عندما تتوقف الدالة سيكون طول النص في عنصر "س" هو نفسه طول Width لليستبوكس
نخزنه
05 - تبحث عن أصغر العناوين في الليست طولا --- "ع"
07 - نقوم بطرح ع من س مع اهمال الفواصل و التقريب إلى الأعلى
08 - نقسم الفارق على 2 نتحصل على قيمة ما ولتكن ص
09 - ننشأ دالة تكرارية تكون فراغات بقدر ص
10 - تضاف تلك القيمة الأخيرة لكل عناوين الليستبوكس
11 - نمسح العنصر "س"
من يكون س :abc_085: ؟؟
موفق :abc_138:
عبد الهادي بهاب
07-08-2016, 05:56 PM
خــوارزمية عمل :
01 - البحث عن العنصــر الذي يتمدد كلما كتبنا فيه ؟؟؟ هذا العنصر "س" هو الذي يحل المشكــل
نعطي لهذا العنصر مواصفات نفس خط الليستبوكس
02 - ننشأ دالة تكرارية دورها تكتب رقما أو حرفا واحد في كل مرة للعنصر "س"
03 - تتوقف الدالة عندما يكون طول العنصر "س" أكبر أو يساوي طول الليست بوكس و أقصد
هنا الــ Width
04 - عندما تتوقف الدالة سيكون طول النص في عنصر "س" هو نفسه طول Width لليستبوكس
نخزنه
05 - تبحث عن أصغر العناوين في الليست طولا --- "ع"
07 - نقوم بطرح ع من س مع اهمال الفواصل و التقريب إلى الأعلى
08 - نقسم الفارق على 2 نتحصل على قيمة ما ولتكن ص
09 - ننشأ دالة تكرارية تكون فراغات بقدر ص
10 - تضاف تلك القيمة الأخيرة لكل عناوين الليستبوكس
11 - نمسح العنصر "س"
من يكون س :abc_085: ؟؟
موفق :abc_138:
هذا خيط ....المشكل الذي يواجهنا ان لا علاقة بطول السترينج بطول اليسبوكس ........... و اظن العمل على هذا النسبة ما سينجح الكود
على كل الموتور شغال :abc_052::abc_052:
ثامر أبو بلقيس
07-08-2016, 06:10 PM
السلام عليكم ورحمة الله وبركاته
ترجمة لما كتبته :
ضمن عملك ليستبوكس وزر ازرع فيه
FontSize = ListBox.GetProperties("ListBox1").FontSize
tblLabelProps = {};
tblLabelProps.Visible = false;
tblLabelProps.FontSize = FontSize;
tblLabelProps.Text = "1";
tblLabelProps.FontName = "Arial";
Page.CreateObject(OBJECT_LABEL, "thameur", tblLabelProps);
for i =1,1000000 do
Label.SetText("thameur",Label.GetText("thameur").."1");
if Label.GetProperties("thameur").Width >= ListBox.GetProperties("ListBox1").Width then
break
end
end
v=String.Length(Label.GetText("thameur"));
R=""
my_table = {};
for bb =1,ListBox.GetCount("ListBox1")do
Table.Insert(my_table, bb, String.Length(ListBox.GetItemText("ListBox1", bb)));
end
for c1,c2 in pairs(my_table) do
if math.min( unpack(my_table)) ==c2 then
R =c1
end
end
vide =v- String.Length(ListBox.GetItemText("ListBox1", R))
pp = Math.Ceil(Math.Ceil(vide)/2)
e =""
for t=1,pp-2 do
e=e.." "
end
for bb =1,ListBox.GetCount("ListBox1")do
ListBox.SetItemText("ListBox1", bb, e..ListBox.GetItemText("ListBox1", bb));
end
Page.DeleteObject("thameur");
نقرأ محاولتك ........بالتوفيق لم يبق الان الا التحضير للموسم الدراسي
نلتقي بود :abc_138:
عبد الهادي بهاب
07-08-2016, 08:57 PM
السلام عليكم ورحمة الله وبركاته
ترجمة لما كتبته :
ضمن عملك ليستبوكس وزر ازرع فيه
fontsize = listbox.getproperties("listbox1").fontsize
tbllabelprops = {};
tbllabelprops.visible = false;
tbllabelprops.fontsize = fontsize;
tbllabelprops.text = "1";
tbllabelprops.fontname = "arial";
page.createobject(object_label, "thameur", tbllabelprops);
for i =1,1000000 do
label.settext("thameur",label.gettext("thameur").."1");
if label.getproperties("thameur").width >= listbox.getproperties("listbox1").width then
break
end
end
v=string.length(label.gettext("thameur"));
r=""
my_table = {};
for bb =1,listbox.getcount("listbox1")do
table.insert(my_table, bb, string.length(listbox.getitemtext("listbox1", bb)));
end
for c1,c2 in pairs(my_table) do
if math.min( unpack(my_table)) ==c2 then
r =c1
end
end
vide =v- string.length(listbox.getitemtext("listbox1", r))
pp = math.ceil(math.ceil(vide)/2)
e =""
for t=1,pp-2 do
e=e.." "
end
for bb =1,listbox.getcount("listbox1")do
listbox.setitemtext("listbox1", bb, e..listbox.getitemtext("listbox1", bb));
end
page.deleteobject("thameur");
نقرأ محاولتك ........بالتوفيق لم يبق الان الا التحضير للموسم الدراسي
نلتقي بود :abc_138:
الكود شغال لكن ظننت السؤال يتعلق بتوسيط النصوص الموجودة فيا ليسبوكس و ليس ادراج مسافة قبلها
و الله اعلم
ثامر أبو بلقيس
07-08-2016, 09:39 PM
الكود شغال لكن ظننت السؤال يتعلق بتوسيط النصوص الموجودة فيا ليسبوكس و ليس ادراج مسافة قبلها
و الله اعلم
هههههههههههه موفق :abc_138:
عبد الهادي بهاب
08-08-2016, 10:23 PM
هههههههههههه موفق :abc_138:
تعديل على الكود ليقوم بالتوسيط داخل اليسبوكس ( التوسيط في الوورد او البارغاراف )
FontSize = ListBox.GetProperties("ListBox1").FontSize
tblLabelProps = {};
tblLabelProps.Visible = false;
tblLabelProps.FontSize = FontSize;
tblLabelProps.Text = "1";
tblLabelProps.FontName = "Arial";
Page.CreateObject(OBJECT_LABEL, "thameur", tblLabelProps);
for i =1,1000000 do
Label.SetText("thameur",Label.GetText("thameur").."1");
if Label.GetProperties("thameur").Width >= ListBox.GetProperties("ListBox1").Width then
break
end
end
v=String.Length(Label.GetText("thameur"));
for bb =1,ListBox.GetCount("ListBox1")do
ff = String.Length(ListBox.GetItemText("ListBox1", bb));
vide = v - ff ;
pp = Math.Ceil(Math.Ceil(vide)/2);
e ="" ; for t=1,pp-2 do e = e.." " end
ListBox.AddItem("ListBox2", e..ListBox.GetItemText("ListBox1", bb));
end
عبد الهادي بهاب
08-08-2016, 10:30 PM
خلبيطة في العربية
ههههههههههههههههههههههههه
عبد الهادي بهاب
08-08-2016, 10:34 PM
مثال عن الكودين
http://up.harajgulf.com/do.php?id=992233
مثال عن الكودين
http://up.harajgulf.com/do.php?id=992233
كودك أحسن و أجمل :abc_152:
لكن الجملة : il y a des aniamux partout dans l'Algerie. في مثالك
لاتتوسط وبالمناسبة لا افهم فرنسي ما معناها ؟؟
عبد الهادي بهاب
09-08-2016, 12:52 AM
كودك أحسن و أجمل :abc_152:
لكن الجملة : Il y a des aniamux partout dans l'algerie. في مثالك
لاتتوسط وبالمناسبة لا افهم فرنسي ما معناها ؟؟
في كل مكان يوجد حيوانات ........
الكود مبني على الكود الاول بحيث اتخلى عن المصفوفة
و لنشتغل على كل عنصرمن اليسبوكس لوحده
نقارن طوله بطول ليسبوكس نضيف له فراغات بعدد الفراغات في اليبال المرجع
ثم نحدف نصف ما اضفناه
و كاننا نقدمه الى الوسط
هذه الفكرة العامة
لكن لا يشاغل على الكل
لماذا الله اعلم
ثامر أبو بلقيس
09-08-2016, 12:57 AM
الكود الأول المطروح من طرفي لا يعالج هكذا جمل
المكتوبة في ملفك أنت ! !
Il y a des aniamux partout dans l'algerie
عبد الهادي بهاب
09-08-2016, 01:12 AM
هل اليسبوكس في كل البرامج فيه مشكطل التوسيط ؟
--------------------------
Set the listbox draw mode to ownerdrawnfixed to control how the
text is aligned. This example will use a stringformat to center the text
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
ListBox1.DrawMode = DrawMode.OwnerDrawFixed
For x As Integer = 0 To 20
ListBox1.Items.Add(x)
Next
End Sub
Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As
System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
Dim g As Graphics = e.Graphics
Dim br As SolidBrush
Dim s As String
Dim sf As New StringFormat
sf.Alignment = StringAlignment.Center
Try
s = ListBox1.Items.Item(e.Index).ToString
Catch ex As Exception
s = ""
Trace.WriteLine(ex.ToString)
End Try
br = New SolidBrush(Color.White)
g.FillRectangle(br, e.Bounds)
If CBool(e.State And DrawItemState.Selected) Then
g.FillRectangle(Brushes.LightBlue, e.Bounds)
End If
g.DrawString(s, ListBox1.Font, Brushes.Black, _
RectangleF.op_Implicit(e.Bounds), sf)
br.Dispose()
End Sub
--------------------------------------------
ثم قررت في الاخير ان اترك هذا الامر و اتفرج توم جيري فهو يهدا البال و احسن للصحة :abc_052::abc_052::abc_052:
http://store2.up-00.com/2016-08/1470777649211.jpg
vBulletin® v3.8.11, Copyright ©2000-2024, abohmam