الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة: برنامج تحكم في الخطوط.

مغلق
بدأه مبرمج متسائل في 12 أغسطس 2007 · 18 رد · 1,513 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته..

في البداية يسرني أن أكون ضيفاً جديداً بينكم، وأتمنى أن ألقى منكم الإهتمام والترحيب..

في الحقيقة قبل فترة جائتني فكرة لإنشاء برنامج للتحكم في الخطوط العربية، وأنا في الحقيقة بعيد منذ فترة عن البرمجة وآخر عهدي كان الفجوال بيسك 6، والحقيقة أنصب إهتمامي في مجال الرسوميات، ومن ذلك فنون الخط العربي، وكل ما أريده منكم أحبتي أن تعينوني فيما أفكر فيه ومشكورين مقدماً..

ولكي أصل لما أريده قسمت العمل على عدة خطوات تنفيذية، وسأبدأ معكم في الخطوة الأولى:

الخطوة الأولى: تفكيك الحروف.

كما تعلمون أن خط (التورتايب) لا يعطيك المرونة الكافية في التحكم في الخط، ولذلك أحتاج إلى تفكيك حروف الكلمة كمرحلة أولى بالشكل الذي في المرفقات.

ويكون ذلك بجعل كل حرف في (مربع عنوان)، ليتسنى لي لاحقاً في الخطوة القادمة التحكم في مكانه أو في حجمه إلخ..

أتمنى تفاعل الأعضاء معي في هذا البرنامج البسيط في عمله، المهم في نتائجه..

شاكراً لكم مقدماً، ولكم من تحياتي وتقديري ..

post-116061-1186909240_thumb.jpg

#2

السلام عليكم و رحمة الله و بركاته

فعلا يا مبرمج متسائل إنها فكرة جيدة و تصلح بالذات لفكرة عمل برنامج التعرف على النصوص الموجودة في الصورة و بالتالي تحويل المستندات المدخلة عن طريق الماسح

الضوئي -الاسكانر- إلى مستندات نصية و هذه بداية الطريق و نشكرك مرة اخرى على اقتراحك هذا .

;) مع خالص تحياتي ،،،

تم تعديل هذه المشاركة بواسطة أبو السيد عدنان في 12 أغسطس 2007 في 15:05

i1044214_21.JPG

#3
أبو السيد عدنان كتب:
السلام عليكم و رحمة الله و بركاته

فعلا يا مبرمج متسائل إنها فكرة جيدة و تصلح بالذات لفكرة عمل برنامج التعرف على النصوص الموجودة في الصورة و بالتالي تحويل المستندات المدخلة عن طريق الماسح

الضوئي -الاسكانر- إلى مستندات نصية و هذه بداية الطريق و نشكرك مرة اخرى على اقتراحك هذا .

;) مع خالص تحياتي ،،،

مرحباً أخي الكريم، شاكر لك مرورك الكريم ..

الحقيقة الفكرة تصلح لأغراض كثيرة منها ماذكرت، والفائدة ستكون للغتنا الأم، وإبرزها بالصورة المطلوبة..

ما أطمح له أخي الكريم هو التحكم بتشكيل الخطوط وتداخلاتها، حيث أن هذا يساعدني كثيراً في إنجاز التصماميم بكفاءة..

ما يهمني الآن كيفية عمل الجزئية التي طرحتها، وكيف يمكنني تقسيم الكلمة إلى حروف منفصلة كل حرف في (Label) مختلف، ليتسنى لي التحكم في الأحجام والمكان ..

بانتظار اقترحاتكم وإرشاداتكم ..

#4

لكي أجعل الذي أريده واضحاً، أحتاج للتالي:

1- دوال التعامل مع النصوص.

2- كيفية عمل نسخ متعددة من أداة واحدة(Label) لكل نسخة مميزاتها المنفردة(هذه أصعب جزئية).

بانتظار مساعدتكم ..

#5

أيعقل لا أحد يمكن أن يساعدني!

أيام VB6 كنت أضع السؤال وفي ساعة واحدة تأتي ألف إجابة!

لا حول ولا قوة إلا بالله ..

#6

السلام عليكم و رحمة الله و بركاته

آسف على تأخري في الاجابة عليك و لكنني إن شاء الله سوف أضع مثال على سؤالك عما قريب .

;) مع خالص تحياتي ،،،

i1044214_21.JPG

#7

السلام عليكم و رحمة الله و بركاته

اخي مبرمج متسائل اليك هذا الكود التالي :

Public Class Form2
	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		FontDialog1.ShowDialog() ' اظهار صندوق حوار الخط
		Dim I As Integer, H As Integer
		If Controls.Count > 2 Then 'اذا كانت عدد عناصر الفورم أكثر من 2 يعني لابد من مسح عناصر الليبل التي تبدأ من العدد 3
			For I = 1 To Controls.Count - 2
				Controls.RemoveAt(Controls.Count - 1)
			Next
		End If
		For I = 1 To TextBox1.Text.Length
			Controls.Add(New Label) ' اضافة عنصر ليبل جديد
			Controls(I + 1).Name = "L" & (I) 'تسمية الليبل
			Controls(I + 1).AutoSize = True
			Controls(I + 1).Text = Mid(TextBox1.Text, I, 1) 'استخراج الحرف من النص
			Controls(I + 1).Top = 35
			Controls(I + 1).Font = FontDialog1.Font
			Controls(I + 1).Left = H
			If I = TextBox1.Text.Length Then Exit For 'لتلافي الخطأ نكتب هذا السطر
			H = H + Controls(I + 1).Width
		Next
	End Sub
End Class

أرجو أن يكون مثالي قد لبى رغبتك ....

;) مع خالص تحياتي ،،،

Label_Writer.rar

i1044214_21.JPG

#8
أبو السيد عدنان كتب:
السلام عليكم و رحمة الله و بركاته

اخي مبرمج متسائل اليك هذا الكود التالي :

Public Class Form2
	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		FontDialog1.ShowDialog() ' اظهار صندوق حوار الخط
		Dim I As Integer, H As Integer
		If Controls.Count > 2 Then 'اذا كانت عدد عناصر الفورم أكثر من 2 يعني لابد من مسح عناصر الليبل التي تبدأ من العدد 3
			For I = 1 To Controls.Count - 2
				Controls.RemoveAt(Controls.Count - 1)
			Next
		End If
		For I = 1 To TextBox1.Text.Length
			Controls.Add(New Label) ' اضافة عنصر ليبل جديد
			Controls(I + 1).Name = "L" & (I) 'تسمية الليبل
			Controls(I + 1).AutoSize = True
			Controls(I + 1).Text = Mid(TextBox1.Text, I, 1) 'استخراج الحرف من النص
			Controls(I + 1).Top = 35
			Controls(I + 1).Font = FontDialog1.Font
			Controls(I + 1).Left = H
			If I = TextBox1.Text.Length Then Exit For 'لتلافي الخطأ نكتب هذا السطر
			H = H + Controls(I + 1).Width
		Next
	End Sub
End Class

أرجو أن يكون مثالي قد لبى رغبتك ....

;) مع خالص تحياتي ،،،

جزاك الله خيراً أخي (أبو السيد عدنان)، وجعله في ميزان حسناتك..

أخي الكريم، نعم لبيت لي الجزء الأول تماماً كما طلبت، وفقك الله لكل خير..

وإن شاء الله نتواصل لنتمم بقية الأجزاء، وأشكرك على تجاوبك معي..

وسأدرس المثال جيداً لكي ننتقل للخطوة التالية بنجاح بإذن الله ..

تم تعديل هذه المشاركة بواسطة مبرمج متسائل في 17 أغسطس 2007 في 18:16

#9

أخي المبرج المتساءل لا شكر على واجب

إن شاء الله أقدر اساعدك في الجزء الثاني .

أرجو أن توضح لي الجزئية الثانية من البرنامج

و أنا عند الاستطاعة حاضر .

;) مع خالص تحياتي ،،،

تم تعديل هذه المشاركة بواسطة أبو السيد عدنان في 17 أغسطس 2007 في 21:49

i1044214_21.JPG

#10

بسم الله الرحمن الرحيم..

وعودة حميدة إن شاء الله لاستكمال البرنامج..

الحقيقة الكود لبى لي ما كنت أريده جزاك الله خيراً..

الخطوة الثانية:

1- التحكم في كل عنصر (Label) على حده، من حيث (حجم الخط، لون الخط، نوع الخط..)

2- التحكم في مكان كل عنصر على حده، من حيث ( المكان، الطول، العرض، الإستدارة..) كما في برامج التصميم، وبشكل أدق، مثل بيئة الفجوال الرسومية، حيث أنك تتحكم في عناصر الفورم بانسيابية مطلقة..

ملاحظة على الكود السابق، لم أفهمها:

		If Controls.Count > 2 Then 'اذا كانت عدد عناصر الفورم أكثر من 2 يعني لابد من مسح عناصر الليبل التي تبدأ من العدد 3
			For I = 1 To Controls.Count - 2
				Controls.RemoveAt(Controls.Count - 1)
			Next
		End If

وجزاك الله خيراً، وبذلك يتبقى لنا الخطوة الأخيرة بعد تمام هذه الخطوة ..

#11

للرفع:)

#12

السلام عليكم و رحمة الله و بركاته

أخي الكريم الكود السابق الذي ذكرته معناه :

شاشة البرنامج بها مجموعة من عناصر التحكم و من هذه العناصر : زر أمر و مربع نص .

رقم الفهرسة لزر الأمر رقم 1 و مربع النص رقم 2

طبعا نحن لا نريد أن نحذف مربع النص و زر الأمر لأنهما هما وسيلتنا الوحيدة للتحكم في البرنامج ، اذا علينا أن نختبر هل توجد عناصر أخرى غير زر الأمر

و مربع النص إذا وجدت يجب إزالتهم من الشاشة لكتابتهم من جديد .

أرجو أن تكون هذه الجزئية مفهومة قبل ان ننتقل للخطوة التالية .

;) مع خالص تحياتي ،،،

i1044214_21.JPG

#13

واضح جداً، جزاك الله خيراً ..

ولننطلق في المرحلة الأخرى بارك الله فيك ..

#14

السلام عليكم و رحمة الله و بركاته

:o تحية طيبة للجميع ،،،

لقد حاولت ان اجعل البرنامج سلسل كالفيجول استديو و لكني لم أستطع لأنني تنقصني الكثير من الخبرة في هذا المجال .

و من يستطيع أن يعطينا فكرة حول ذلك فأهلا و سهلا لكي تعم الفائدة .

على كل هذا هو ما استطعت أن اتوصل إليه في الكود التالي :

Public Class Form2

	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		FontDialog1.ShowDialog() ' اظهار صندوق حوار الخط
		Dim I As Integer, H As Integer
		ComboBox1.Items.Clear()
		If Controls.Count > 5 Then 'اذا كانت عدد عناصر الفورم أكثر من 5 يعني لابد من مسح عناصر الليبل التي تبدأ من العدد 6
			For I = 1 To Controls.Count - 5
				Controls.RemoveAt(Controls.Count - 1)
			Next
		End If
		For I = 1 To TextBox1.Text.Length
			Controls.Add(New Label) ' اضافة عنصر ليبل جديد
			Controls(I + 4).Name = "L" & (I) 'تسمية الليبل
			Controls(I + 4).AutoSize = True
			Controls(I + 4).Text = Mid(TextBox1.Text, I, 1) 'استخراج الحرف من النص
			Controls(I + 4).Top = 40
			Controls(I + 4).BackColor = Me.BackColor
			Controls(I + 4).Font = FontDialog1.Font
			Controls(I + 4).Left = H
			ComboBox1.Items.Add(Controls(I + 4).Name & "{" & Controls(I + 4).Text & "}")
			If I = TextBox1.Text.Length Then Exit For 'لتلافي الخطأ نكتب هذا السطر
			H = H + Controls(I + 4).Width
		Next
	End Sub

	Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
		'اختبار ما اذا كان العنصر محددا أم لا
		If Controls(ComboBox1.SelectedIndex + 5).BackColor = Me.BackColor Then 'العنصر غير محدد لأن لون خلفيته مثل لون خلفية الشاشة
			Controls(ComboBox1.SelectedIndex + 5).BackColor = Color.Blue 'تحديد العنصر
		Else
			Controls(ComboBox1.SelectedIndex + 5).BackColor = Me.BackColor 'إلغاء التحديد
		End If
	End Sub

	Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
		'اظهار مربع حوار الخطوط
		Me.FontDialog1.ShowDialog()
		Dim I As Integer, H As Integer
		For I = 5 To Controls.Count - 1
			'اختبار العناصر المحددة
			If Controls(I).BackColor = Color.Blue Then
				Controls(I).Font = FontDialog1.Font
				'إلغاء تحديد العنصر
				Controls(I).BackColor = Me.BackColor
			End If
			'اعادة ترتيب العناصر
			Controls(I).Left = H
			H = H + Controls(I).Width
		Next
	End Sub

	Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
		'اظهار مربع حوار اللوان
		ColorDialog1.ShowDialog()
		Dim I As Integer
		For I = 5 To Controls.Count - 1
			'اختبار العناصر المحددة
			If Controls(I).BackColor = Color.Blue Then
				Controls(I).ForeColor = ColorDialog1.Color
				'إلغاء تحديد العنصر
				Controls(I).BackColor = Me.BackColor
			End If
		Next
	End Sub
End Class

طريقة الاستخدام :

1- نحدد العنصر من قائمة المربع المنسدل ،إذا كان العنصر محدد مسبقا فسوف يختفي التحديد أما إذا كان غير محدد فسوف يتم تحديده

2- لتغيير الخط للعناصر المحددة نضغط على الزر A

3- لتغيير لون الخط للعناصر المحددة نضغط على الزر C

أرجو أن يكون الكود واضحاً

;) مع خالص تحياتي ،،،

Label_Writer.rar

i1044214_21.JPG

#15

رائع رائع..

تعبتك معي أخي الكريم..

أنت وصلت للنتيجة التي أريد لكن بالطريقة التي لا أريد:)..

كنت أتمنى أن تضغط على العنصر، وتتحكم فيه مباشرة، لأننا سنحتاج لذلك لكي نقوم ببقية الأمور الأخرى، مثل التحريك، والتدوير..

أعلم الصعوبة التي واجهتك لحل هذه الإشكالية، لأن هذه العناصر تعتبر غير موجودة على الفورم، فمن الصعوبة التحكم في أحداثها، لكن لكل مشكلة حل بإذن الله ..

على العموم ما وصلنا له أعتبره ممتاز لما كنت أفكر فيه..

بقي الخطوة الأخيرة، وسأتجاوز بعض الأمور في الخطوة الثانية، ولعل بقية الإخوان يساعدوننا فيها..

الخطوة الأخيرة، هي حفظ ناتج العمل بصيغة (pdf)، أو طباعة الناتج..

وبهذا أكون حققت الخطوات المهمة، وجزاك الله خيراً ..

تم تعديل هذه المشاركة بواسطة مبرمج متسائل في 22 أغسطس 2007 في 19:17

#16

للرفع:)

#17

السلام عليكم و رحمة الله و بركاته

:^) آسف على تأخري في الاجابة على تسألاتك

بالنسبة لحفظ النتائج في ملف Pdf فلدي فكرة وهي :

تحويل الكتابة إلى ملف ورد ثم استخدام أداة لتحويل ملف ورد إلى pdf

إلى حد الآن أنا أبحث عن أداة تقوم بتحويل ملف ورد إلى ملف Pdf

و عندما أحصل على تلك الأداة فسوف أرفق لك مثال :) .

;) مع خالص تحياتي ،،،

تم تعديل هذه المشاركة بواسطة أبو السيد عدنان في 25 أغسطس 2007 في 06:32

i1044214_21.JPG

#18

أهلا بك أخي الكريم..

أنا أريد فقط كيفية طباعة الناتج الذي وصلت له .. هذا يكفي :)

#19

للرفع..

هذا الموضوع مغلق.

مواضيع مشابهة