منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : التحكم في نوع الخط فى نظام الباركود
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم اخوتي 

اردة تعديل بسيط على الكود من فضلكم

اضفط على Form1 عدد 1 combobox و اريد من خلاله التحكم في نوع الخط و يسمع على الملسق بعد الطباعة




حاولت التعديل من الموديول بهذه الطريقة ولكن اعطتني خطاء



قبل التعديل
     GraphZ.DrawString(Company, New Font("times new roman", 12, FontStyle.Bold), New SolidBrush(Color.Black), 0, 50)


بعد التعديل
     GraphZ.DrawString(Company, New Font(form1.combobox1.text), New SolidBrush(Color.Black), 0, 50)

السورس كود فى المرفقات

إقتباس :قبل التعديل
     GraphZ.DrawString(Company, New Font("times new roman", 12, FontStyle.Bold), New SolidBrush(Color.Black), 0, 50)


بعد التعديل
     GraphZ.DrawString(Company, New Font(form1.combobox1.text), New SolidBrush(Color.Black), 0, 50)



شىء طبيعى أن يحدث خطأ فى الموديول لأن الفونت لم يتم تكوينه بشكل صحيح يمكنك استخدام الكود التالى ليعمل معك

كود :
GraphZ.DrawString(TheText, New Font(form1.combobox1.text, 9, FontStyle.Bold), New SolidBrush(Color.Black), 70, 40)



لكن 
لكى تحصل على ما تريد بطريقة أفضل اليك الخطوات 

1- ستقوم بتغيير فى تعريف الدالة فى الموديول حتى يستقبل متغير الخط و يكون بهذا الشكل 


كود :
   Function Code128(ByVal TheText As String, ByVal CodeLetter As String, Optional Font As Font = Nothing, Optional Price As String = Nothing, Optional ByVal Kind As String = Nothing, Optional ByVal Company As String = Nothing) As Image

ثم تعدل الكود بنهاية الدالة الى هذا الكود 


كود :
       ' رسم النص المراد ترميزه اسفل الكود
       If Font Is Nothing Then
           Font = New Font("times new roman", 9, FontStyle.Bold)
       End If
       Dim Font2 = New Font(Font.FontFamily, Font.Size + 3, FontStyle.Bold)

       GraphZ.DrawString(TheText, Font, New SolidBrush(Color.Black), 70, 40)
       Dim format1 As New StringFormat(StringFormatFlags.NoClip)
       format1.Alignment = StringAlignment.Center
       GraphZ.DrawString(Kind, Font2, New SolidBrush(Color.Black), 0, 3)
       GraphZ.DrawString(Price, Font, New SolidBrush(Color.Black), 0, 40)
       GraphZ.DrawString(Company, Font2, New SolidBrush(Color.Black), 0, 50)

الان يمكنك تعيين الخط من داخل النموذج مباشرة 
كود :
   Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
       PicBarCode.BackgroundImage = Code128(TextBox3.Text, "A", New Font(ComboBox1.Text.ToString, 9, FontStyle.Bold), TextBox4.Text & " " & "L.E", TextBox2.Text, TextBox1.Text)
   End Sub

   Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
       PicBarCode.BackgroundImage = Code128(TextBox3.Text, "A", New Font(ComboBox1.Text.ToString, 9, FontStyle.Bold), TextBox4.Text & " " & "L.E", TextBox2.Text, TextBox1.Text)
   End Sub

و بالتوفيق
(13-05-18, 09:46 AM)mrnooo2000 كتب : [ -> ]
إقتباس :قبل التعديل
     GraphZ.DrawString(Company, New Font("times new roman", 12, FontStyle.Bold), New SolidBrush(Color.Black), 0, 50)


بعد التعديل
     GraphZ.DrawString(Company, New Font(form1.combobox1.text), New SolidBrush(Color.Black), 0, 50)



شىء طبيعى أن يحدث خطأ فى الموديول لأن الفونت لم يتم تكوينه بشكل صحيح يمكنك استخدام الكود التالى ليعمل معك

كود :
GraphZ.DrawString(TheText, New Font(form1.combobox1.text, 9, FontStyle.Bold), New SolidBrush(Color.Black), 70, 40)



لكن 
لكى تحصل على ما تريد بطريقة أفضل اليك الخطوات 

1- ستقوم بتغيير فى تعريف الدالة فى الموديول حتى يستقبل متغير الخط و يكون بهذا الشكل 


كود :
   Function Code128(ByVal TheText As String, ByVal CodeLetter As String, Optional Font As Font = Nothing, Optional Price As String = Nothing, Optional ByVal Kind As String = Nothing, Optional ByVal Company As String = Nothing) As Image

ثم تعدل الكود بنهاية الدالة الى هذا الكود 


كود :
       ' رسم النص المراد ترميزه اسفل الكود
       If Font Is Nothing Then
           Font = New Font("times new roman", 9, FontStyle.Bold)
       End If
       Dim Font2 = New Font(Font.FontFamily, Font.Size + 3, FontStyle.Bold)

       GraphZ.DrawString(TheText, Font, New SolidBrush(Color.Black), 70, 40)
       Dim format1 As New StringFormat(StringFormatFlags.NoClip)
       format1.Alignment = StringAlignment.Center
       GraphZ.DrawString(Kind, Font2, New SolidBrush(Color.Black), 0, 3)
       GraphZ.DrawString(Price, Font, New SolidBrush(Color.Black), 0, 40)
       GraphZ.DrawString(Company, Font2, New SolidBrush(Color.Black), 0, 50)

الان يمكنك تعيين الخط من داخل النموذج مباشرة 
كود :
   Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
       PicBarCode.BackgroundImage = Code128(TextBox3.Text, "A", New Font(ComboBox1.Text.ToString, 9, FontStyle.Bold), TextBox4.Text & " " & "L.E", TextBox2.Text, TextBox1.Text)
   End Sub

   Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
       PicBarCode.BackgroundImage = Code128(TextBox3.Text, "A", New Font(ComboBox1.Text.ToString, 9, FontStyle.Bold), TextBox4.Text & " " & "L.E", TextBox2.Text, TextBox1.Text)
   End Sub

و بالتوفيق
تم المطلوب شكرا لك
من فضلك اخي نبيل ارفع لنا الملف بعد التعديل ما عرفت اضبطو شكرا
يا ريت  الملف بعد  التعديل
بعد اذنكم
السلام عليكم اخوتي

اسف على التاخير فى الرد

كان عندي مشكلة فى النت

الملف فى المرفقات و بالتوفيق للجميع