منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] افضل ما توصلت له لنظام الباركود - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] افضل ما توصلت له لنظام الباركود (/showthread.php?tid=17187)

الصفحات: 1 2 3


RE: افضل ما توصلت له لنظام الباركود - nabil.1710 - 24-09-16

(23-09-16, 11:39 PM)ابو ليلى كتب : عذراً للتاخير اخي الكريم.....كثرة المشاغل
لتحديد الطابعة من الطابعات المثبتة لديك انت تحتاج الى تمرير اسم الطابعة مباشرة الى اعدادت الطباعة او كفكرة موسعة
لنقم باضافة الطابعات المتوفرة الى ListBox1 و اضافة من عندي نضيف ايضاً الدقة الى ListBox2
و نمرر اسم الطابعة و الدقة الى اجراء الطباعة
المطلوب منك اضافة ListBox1-ListBox2 الى النموذج
و الكود التالي استبدله بكود النموذج لديك

كود النموذج

PHP كود :
Imports System.Drawing.Printing

Public Class Form1
    Dim PrintDoc 
As Printing.PrintDocument = New Printing.PrintDocument()
 
   Dim pd_PrintDialog As New PrintDialog
    
' Dim MyImage As System.Drawing.Image = PicBarCode.BackgroundImage

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        ActiveControl = TextBox3

        Dim Print_name As String
        For i As Integer = 0 To PrinterSettings.InstalledPrinters.Count - 1
            Print_name = PrinterSettings.InstalledPrinters.Item(i)
            ListBox1.Items.Add(Print_name)
        Next

        ListBox2.DataSource = pd_PrintDialog.PrinterSettings.PrinterResolutions.OfType(Of Printing.PrinterResolution).Select(Function(x) New PrintQuality(x)).ToArray
        ListBox2.Enabled = ListBox2.Items.Count > 0
        ListBox2.SelectedItem = ListBox2.Items.OfType(Of PrintQuality).FirstOrDefault

    End Sub

    ' 
تم ايقاف هذا الاجراء و لم يعد يستخدم و ترك مؤقتا 
    Public Sub PrintBarCodeV
()

 
       pd_PrintDialog.UseEXDialog True
        pd_PrintDialog
.AllowPrintToFile False

        
'تحديد عدد النسخ المراد طباعتها
        pd_PrintDialog.PrinterSettings.Copies = nud_Count.Value

        '
عرض صندوق حوار اختيار الطابعة
        If pd_PrintDialog
.ShowDialog Windows.Forms.DialogResult.OK Then
            PrintDoc
.PrinterSettings pd_PrintDialog.PrinterSettings
            AddHandler PrintDoc
.PrintPageAddressOf PrintDocHandler

        End 
If

 
   End Sub


    Private Sub TextBox3_TextChanged
(sender As ObjectAs EventArgsHandles TextBox3.TextChanged
        PicBarCode
.BackgroundImage Code128(TextBox3.Text"A"TextBox4.TextTextBox2.Text)
 
   End Sub


    
'This is the event handler for printing bar codes
    Private Sub PrintDocHandler(ByVal sender As Object, ByVal ev As Printing.PrintPageEventArgs)
        ev.Graphics.DrawImage(PicBarCode.BackgroundImage, nud_MarginH.Value, nud_MarginW.Value, nud_MarginWBrcode.Value, nud_MarginHBrcode.Value)

    End Sub





    Private Sub butPageSetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butPageSetup.Click


        '
اعداد الصفحة

        PageSetupDialog1
.Document PrintDoc
        PageSetupDialog1
.ShowDialog()
 
   End Sub

    Private Sub Button1_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click


        
'معاينة قبل الطباعة

        AddHandler PrintDoc.PrintPage, AddressOf PrintDocHandler

        '
تحديد عدد النسخ المراد طباعتها
        pd_PrintDialog
.PrinterSettings.Copies nud_Count.Value

        PrintPreviewDialog1
.Document PrintDoc
        PrintPreviewDialog1
.ShowDialog()


 
   End Sub



    Private Sub Button5_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button5.Click

        Close
()
 
   End Sub


    Private Sub طباعة_الباركود_Load
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        Try


            
'كتابة اسم المنتج على ملصق الباركود
            '
Dim a As Graphics PicBarCode.CreateGraphics
            
'a.DrawString(TextBox2.Text, Me.Font, Brushes.Black, 100, 5)


            '
ActiveControl TextBox3

        Catch ex 
As Exception

        End 
Try
 
   End Sub

    Private Sub Button11_Click
(ByVal sender As System.ObjectByVal e As System.EventArgs)
 
       PrintBarCodeV()
 
   End Sub







    Private Sub Button11_Click_2
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button11.Click


        
'طباعة الباركود
        If TextBox3.Text = "" Then '
الباركود فارغ 
            MsgBox
("من فضلك تأكد من كتابة النص المراد تحويله الى باركود"MsgBoxStyle.DefaultButton1"ogy soft")
 
           Exit Sub

        Else

            pd_PrintDialog
.PrinterSettings.DefaultPageSettings.PrinterSettings.PrintToFile False
            
'تحديد عدد النسخ المراد طباعتها.
            pd_PrintDialog.PrinterSettings.Copies = nud_Count.Value

            PrintDoc.PrinterSettings = pd_PrintDialog.PrinterSettings
            PrintDoc.PrinterSettings.PrinterName = ListBox1.Text


            '
دقة الطباعة
            Dim PrintQuality 
TryCast(ListBox2.SelectedItemPrintQuality)
 
           If PrintQuality IsNot Nothing Then
                PrintDoc
.DefaultPageSettings.PrinterResolution PrintQuality.Resolution
            End 
If


 
           AddHandler PrintDoc.PrintPageAddressOf PrintDocHandler
            
'امر الطباعة
            PrintDoc.Print()
        End If
    End Sub





    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

        '
كتابة اسم المنتج على ملصق الباركود
        PicBarCode
.BackgroundImage Code128(TextBox3.Text"A"TextBox4.TextTextBox2.Text)


 
   End Sub

    Private Sub Timer2_Tick
(sender As ObjectAs EventArgsHandles Timer2.Tick

        
'كتابة سعر  المنتج على ملصق الباركود
        PicBarCode.BackgroundImage = Code128(TextBox3.Text, "A", TextBox4.Text, TextBox2.Text)
    End Sub

End Class


'
كلاس للدقة
Public Class PrintQuality
    Public Property Resolution 
As Printing.PrinterResolution

    Public Overrides 
Function ToString() As String
        If Resolution
.Kind Printing.PrinterResolutionKind.Custom Then
            Return 
"Custom (" Resolution." x " Resolution." DPI)"
 
       Else
            Return Resolution
.Kind.ToString
        End 
If
 
   End Function

 
   Public Sub New(Resolution As Printing.PrinterResolution)
 
       Me.Resolution Resolution
    End Sub
End 
Class 

و لا تنسى ترفع الملف بعد التعديل لمن طلبه الاصدارة لدي لا تتوافق مع اغلب الاصدارات عند الاعضاء
شكرا لك اخى ابو ليلى و قد اضفت على النموذج TextBox1 و اسميته في Module1 باسم Company حتى يظهر به اسم الشركة 

و قد اضفت هذا الكود فى Module1
 GraphZ.DrawString(Company, New Font("times new roman", 12, FontStyle.Bold), New SolidBrush(Color.Black), 0, 50)

و قمت باعدة تنسيق الباركود 

و عدلة فى هذا الكود لاظهار رمز العملة على السعر و اضافة اسم الشركة فى الطباعة
PicBarCode.BackgroundImage = Code128(TextBox3.Text, "A", TextBox4.Text & " " & "L.E", TextBox2.Text, TextBox1.Text)

و اهم ما فى هذه المشاركة اخى ابو ليلى انى فهمت الكود جيدا و شكرا جزيلا لك و تم اضافة النموذج فى المرفقات 

نسأل الله ان يستفيد الجميع و ان يرزق كل طالب علم كل ما يتمناه

و نشكر مرتا اخرى الاخ ابو ليلى و نسأل الله ان يزيده علما


RE: افضل ما توصلت له لنظام الباركود - nabil.1710 - 15-05-17

(24-09-16, 03:49 AM)nabil.1710 كتب :
(23-09-16, 11:39 PM)ابو ليلى كتب : عذراً للتاخير اخي الكريم.....كثرة المشاغل
لتحديد الطابعة من الطابعات المثبتة لديك انت تحتاج الى تمرير اسم الطابعة مباشرة الى اعدادت الطباعة او كفكرة موسعة
لنقم باضافة الطابعات المتوفرة الى ListBox1 و اضافة من عندي نضيف ايضاً الدقة الى ListBox2
و نمرر اسم الطابعة و الدقة الى اجراء الطباعة
المطلوب منك اضافة ListBox1-ListBox2 الى النموذج
و الكود التالي استبدله بكود النموذج لديك

كود النموذج

PHP كود :
Imports System.Drawing.Printing

Public Class Form1
    Dim PrintDoc 
As Printing.PrintDocument = New Printing.PrintDocument()
 
   Dim pd_PrintDialog As New PrintDialog
    
' Dim MyImage As System.Drawing.Image = PicBarCode.BackgroundImage

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        ActiveControl = TextBox3

        Dim Print_name As String
        For i As Integer = 0 To PrinterSettings.InstalledPrinters.Count - 1
            Print_name = PrinterSettings.InstalledPrinters.Item(i)
            ListBox1.Items.Add(Print_name)
        Next

        ListBox2.DataSource = pd_PrintDialog.PrinterSettings.PrinterResolutions.OfType(Of Printing.PrinterResolution).Select(Function(x) New PrintQuality(x)).ToArray
        ListBox2.Enabled = ListBox2.Items.Count > 0
        ListBox2.SelectedItem = ListBox2.Items.OfType(Of PrintQuality).FirstOrDefault

    End Sub

    ' 
تم ايقاف هذا الاجراء و لم يعد يستخدم و ترك مؤقتا 
    Public Sub PrintBarCodeV
()

 
       pd_PrintDialog.UseEXDialog True
        pd_PrintDialog
.AllowPrintToFile False

        
'تحديد عدد النسخ المراد طباعتها
        pd_PrintDialog.PrinterSettings.Copies = nud_Count.Value

        '
عرض صندوق حوار اختيار الطابعة
        If pd_PrintDialog
.ShowDialog Windows.Forms.DialogResult.OK Then
            PrintDoc
.PrinterSettings pd_PrintDialog.PrinterSettings
            AddHandler PrintDoc
.PrintPageAddressOf PrintDocHandler

        End 
If

 
   End Sub


    Private Sub TextBox3_TextChanged
(sender As ObjectAs EventArgsHandles TextBox3.TextChanged
        PicBarCode
.BackgroundImage Code128(TextBox3.Text"A"TextBox4.TextTextBox2.Text)
 
   End Sub


    
'This is the event handler for printing bar codes
    Private Sub PrintDocHandler(ByVal sender As Object, ByVal ev As Printing.PrintPageEventArgs)
        ev.Graphics.DrawImage(PicBarCode.BackgroundImage, nud_MarginH.Value, nud_MarginW.Value, nud_MarginWBrcode.Value, nud_MarginHBrcode.Value)

    End Sub





    Private Sub butPageSetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butPageSetup.Click


        '
اعداد الصفحة

        PageSetupDialog1
.Document PrintDoc
        PageSetupDialog1
.ShowDialog()
 
   End Sub

    Private Sub Button1_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click


        
'معاينة قبل الطباعة

        AddHandler PrintDoc.PrintPage, AddressOf PrintDocHandler

        '
تحديد عدد النسخ المراد طباعتها
        pd_PrintDialog
.PrinterSettings.Copies nud_Count.Value

        PrintPreviewDialog1
.Document PrintDoc
        PrintPreviewDialog1
.ShowDialog()


 
   End Sub



    Private Sub Button5_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button5.Click

        Close
()
 
   End Sub


    Private Sub طباعة_الباركود_Load
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        Try


            
'كتابة اسم المنتج على ملصق الباركود
            '
Dim a As Graphics PicBarCode.CreateGraphics
            
'a.DrawString(TextBox2.Text, Me.Font, Brushes.Black, 100, 5)


            '
ActiveControl TextBox3

        Catch ex 
As Exception

        End 
Try
 
   End Sub

    Private Sub Button11_Click
(ByVal sender As System.ObjectByVal e As System.EventArgs)
 
       PrintBarCodeV()
 
   End Sub







    Private Sub Button11_Click_2
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button11.Click


        
'طباعة الباركود
        If TextBox3.Text = "" Then '
الباركود فارغ 
            MsgBox
("من فضلك تأكد من كتابة النص المراد تحويله الى باركود"MsgBoxStyle.DefaultButton1"ogy soft")
 
           Exit Sub

        Else

            pd_PrintDialog
.PrinterSettings.DefaultPageSettings.PrinterSettings.PrintToFile False
            
'تحديد عدد النسخ المراد طباعتها.
            pd_PrintDialog.PrinterSettings.Copies = nud_Count.Value

            PrintDoc.PrinterSettings = pd_PrintDialog.PrinterSettings
            PrintDoc.PrinterSettings.PrinterName = ListBox1.Text


            '
دقة الطباعة
            Dim PrintQuality 
TryCast(ListBox2.SelectedItemPrintQuality)
 
           If PrintQuality IsNot Nothing Then
                PrintDoc
.DefaultPageSettings.PrinterResolution PrintQuality.Resolution
            End 
If


 
           AddHandler PrintDoc.PrintPageAddressOf PrintDocHandler
            
'امر الطباعة
            PrintDoc.Print()
        End If
    End Sub





    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

        '
كتابة اسم المنتج على ملصق الباركود
        PicBarCode
.BackgroundImage Code128(TextBox3.Text"A"TextBox4.TextTextBox2.Text)


 
   End Sub

    Private Sub Timer2_Tick
(sender As ObjectAs EventArgsHandles Timer2.Tick

        
'كتابة سعر  المنتج على ملصق الباركود
        PicBarCode.BackgroundImage = Code128(TextBox3.Text, "A", TextBox4.Text, TextBox2.Text)
    End Sub

End Class


'
كلاس للدقة
Public Class PrintQuality
    Public Property Resolution 
As Printing.PrinterResolution

    Public Overrides 
Function ToString() As String
        If Resolution
.Kind Printing.PrinterResolutionKind.Custom Then
            Return 
"Custom (" Resolution." x " Resolution." DPI)"
 
       Else
            Return Resolution
.Kind.ToString
        End 
If
 
   End Function

 
   Public Sub New(Resolution As Printing.PrinterResolution)
 
       Me.Resolution Resolution
    End Sub
End 
Class 

و لا تنسى ترفع الملف بعد التعديل لمن طلبه الاصدارة لدي لا تتوافق مع اغلب الاصدارات عند الاعضاء
شكرا لك اخى ابو ليلى و قد اضفت على النموذج TextBox1 و اسميته في Module1 باسم Company حتى يظهر به اسم الشركة 

و قد اضفت هذا الكود فى Module1
 GraphZ.DrawString(Company, New Font("times new roman", 12, FontStyle.Bold), New SolidBrush(Color.Black), 0, 50)

و قمت باعدة تنسيق الباركود 

و عدلة فى هذا الكود لاظهار رمز العملة على السعر و اضافة اسم الشركة فى الطباعة
PicBarCode.BackgroundImage = Code128(TextBox3.Text, "A", TextBox4.Text & " " & "L.E", TextBox2.Text, TextBox1.Text)

و اهم ما فى هذه المشاركة اخى ابو ليلى انى فهمت الكود جيدا و شكرا جزيلا لك و تم اضافة النموذج فى المرفقات 

نسأل الله ان يستفيد الجميع و ان يرزق كل طالب علم كل ما يتمناه

و نشكر مرتا اخرى الاخ ابو ليلى و نسأل الله ان يزيده علما

السلام  عليكم  اخوانى

الباركود على برينتر زيبرا  نوع الخط ردئ  جدا و  لو  طبعته  على  البرينتر  العادى يكون جيد

و  الكود يتم قرائته على  الملصق  الكبير بصورة  جيدة  اما الملصق الصغير لا يقرا  حجم الملصق  الصغير 2.5*1.25
و سوف ارفق صورة داخل  المشاركة

الملصق بعد الطباعة مع  العلم  انى غيرت  اكثر من خط و لكن  الجوده تظهر رديئه 




RE: افضل ما توصلت له لنظام الباركود - silverlight - 15-05-17

غالبا المشكلة مشكلة graphics و مقياس رسم
الطابعة مقياس الرسم الخاص بها يختلف تماما عن الصور .... أيضا يختلف عن الفورم او الكونترول التي تظهر فيه الصورة
ما هي أقل أبعاد تريدها لصورة الباركود؟


RE: افضل ما توصلت له لنظام الباركود - nabil.1710 - 15-05-17

(15-05-17, 03:44 AM)silverlight كتب : غالبا المشكلة مشكلة graphics و مقياس رسم
الطابعة مقياس الرسم الخاص بها يختلف تماما عن الصور .... أيضا يختلف عن الفورم او الكونترول التي تظهر فيه الصورة
ما هي أقل أبعاد تريدها لصورة الباركود؟

شكرا على سرعة الرد اخى

اخى اريد ان  اطبع  الباركود على  3 احجام للملصقاط
الحجم الصغير  2.5*1.25
الحجم المتوسط 3.8*1.5
الحجم  الكبير 5*2.5

اما ابعاد الصورة  اللتى تناسب هذه الملسقاط صدقنى لا  ادرى


RE: افضل ما توصلت له لنظام الباركود - silverlight - 15-05-17

ابعاد الملصقات ب السنتيميتر أم ب البوصة


RE: افضل ما توصلت له لنظام الباركود - nabil.1710 - 15-05-17

(15-05-17, 04:38 AM)silverlight كتب : ابعاد الملصقات ب السنتيميتر أم ب البوصة

الملصقات بالسنتيميتر


RE: افضل ما توصلت له لنظام الباركود - silverlight - 15-05-17

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


RE: افضل ما توصلت له لنظام الباركود - nabil.1710 - 15-05-17

(15-05-17, 05:04 AM)silverlight كتب : لو بتفهم في الجرافكس فأنت لا تحتاجني في شئ
و يمكنك هنا تنفيذ الفكرة التالية
لا ترسم مباشرة علي ابعاد صورة صغيرة
بل ترسم علي صورة كبيرة ابعادها مثلا تساوي خمسة اضعاف الصورة الاصلية وبعد ان تنتهي من عملية الرسم
تقوم بتعيير ابعاد الصورة لاحقا لتتناسب مع الابعاد التي تريدها
او لتحديد ابعاد الصورة
اولا يجب ان تضع في اعتبارك  ان كل حرف ياخذ مساحة معينة بناء علي حجم الفونت
لذلك يجب أن تحسب طول و ارتفاع التكست اولا وتستفيد من عرض التكست في تحديد ابعاد الصورة
أما ارتفاع الصورة فهو خليط من ارتفاع التكست الاول ثم ارتفاع المستطيلات ثم ارتفاع التكست الثالث و ارتفاع التكست الرابع

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


RE: افضل ما توصلت له لنظام الباركود - silverlight - 15-05-17

أوك لاحقا سوف أضع لك الكود الذي يقوم ب بناء صورة الباركود


RE: افضل ما توصلت له لنظام الباركود - nabil.1710 - 15-05-17

(15-05-17, 05:17 AM)silverlight كتب : أوك لاحقا سوف أضع لك الكود الذي يقوم ب بناء صورة الباركود

فى الانتظار اخى شكرا  لك و تصبح  على خير