thongkorn โพสต์ 2018-3-16 12:13:30

[VB.NET] โค้ดการพิมพ์ชื่อที่อยู่ผู้รับออกซองจดหมายขนาด 23x11 ซม. ด้วย ActiveReports .NET

http://www.g2gnet.com/webboard/images/vbnet/arprintenvelope.png


สำหรับสาย VB6 + ActiveReports 2.0 สามารถอ่านรายละเอียดและดาวน์โหลดโค้ดได้ที่หัวข้อ โค้ดการพิมพ์ชื่อที่อยู่ผู้รับออกซองจดหมายขนาด 23x11 ซม. ด้วย ActiveReports 2.0 ... ในส่วนของรายละเอียดวิธีการขั้นตอนต่างๆ แอดมินจะขอข้ามไปเพราะได้เคยกล่าวนำไปหลายครั้งแล้ว สำหรับมิตรรักแฟนคลับสายพันธุ์ Visual Basic ที่เผลอพลัดหลงเข้ามาเห็นเว็บไซต์แห่งนี้ จงใช้ความพยายามในการค้นหาข้อมูลพื้นฐาน หรือการใช้งานเบื้องต้นของ ActiveReports เอาเองด้วยเถิดครับผม ...
การใช้งาน ActiveReports Designer ...
http://www.g2gnet.com/webboard/images/vbnet/ardesignerenvelope.png
l


มาดูโค้ดในส่วนของฟอร์มหลัก ...
' / --------------------------------------------------------------------
' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
' / eMail : thongkorn@hotmail.com
' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
' / Facebook: https://www.facebook.com/g2gnet (For Thailand)
' / Facebook: https://www.facebook.com/commonindy (Worldwide)
' / Purpose : Print out standard envelope 23x11 cm. with ActiveReports.NET 6.0
' / Microsoft Visual Basic .NET (2010) SP1

' / This is open source code under @CopyLeft by Thongkorn Tubtimkrob.
' / You can modify and/or distribute without to inform the developer.
' / --------------------------------------------------------------------
Imports DataDynamics.ActiveReports

Public Class frmPrintEnvelope

    ' / --------------------------------------------------------------------
    Private Sub frmPrintEnvelope_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
      txtAddress.Text = _
                "กรุณาส่ง" & vbCrLf & _
                "นายทองก้อน ทับทิมกรอบ" & vbCrLf & _
                "555 ม.555 ซ.ห้าห้าห้า ถ.กลางเมือง" & vbCrLf & _
                "ต.เมืองเก่า อ.เมือง" & vbCrLf & _
                "จ.ขอนแก่น 40000"
      '// ตั้งค่า ActiveReports
      Viewer1.ReportViewer.Zoom = 0.75F   ' Zoom = 75%
      Viewer1.ReportViewer.DisplayUnits = Viewer.DisplayUnits.Metric
      '// Form Minimum Size
      Me.MinimumSize = New Size(781, 631)

      '// ตั้งค่าการพิมพ์จากขอบซ้ายของซองจดหมาย
      txtLeftMargin.Text = "80"
      '// ตั้งค่าการพิมพ์จากด้านบน
      txtTopMargin.Text = "25"

      '// Initialize Font
      lblDataFont.Font = New Font("BrowalliaUPC", "16")
      lblDataFont.Text = lblDataFont.Font.Name & " " & lblDataFont.Font.Size
    End Sub

    ' / --------------------------------------------------------------------
    Private Sub btnPrintPreview_Click(sender As System.Object, e As System.EventArgs) Handles btnPrintPreview.Click
      If txtLeftMargin.Text = "" Then txtLeftMargin.Text = "80"
      If txtTopMargin.Text = "" Then txtTopMargin.Text = "25"

      '/ Instance name ARDesigner มันจะชี้ไปที่ไฟล์ arPrintEnvelope.vb
      Dim rpt As New arPrintEnvelope()
      '/ โหลดรายงาน document (arPrintEnvelope) เข้าสู่ ActiveReports Viewer
      Me.Viewer1.Document = rpt.Document
      '/ Run Report
      rpt.Run()
    End Sub

    ' / --------------------------------------------------------------------
    Private Sub btnFont_Click(sender As System.Object, e As System.EventArgs) Handles btnFont.Click

      Dim FontDialog As FontDialog = New FontDialog
      '// FontDialog รับค่าปัจจุบันจาก lblDataFont
      FontDialog.Font = New Font(lblDataFont.Font.Name, lblDataFont.Font.Size, lblDataFont.Font.Style)

      If FontDialog.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
            lblDataFont.Font = FontDialog.Font
            lblDataFont.Text = lblDataFont.Font.Name & " " & lblDataFont.Font.Size
      End If
    End Sub

    ' / --------------------------------------------------------------------
    ' / ก่อนใช้งาน Form_KeyDown ได้ ต้องกำหนดค่าให้ KeyPreview = True ก่อน
    Private Sub frmPrintEnvelope_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
      Select Case e.KeyCode
            Case Keys.F7
                Call btnPrintPreview_Click(sender, e)
            Case Keys.F10
                Call btnExit_Click(sender, e)
      End Select
    End Sub

    ' / --------------------------------------------------------------------
    Private Sub txtLeftMargin_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtLeftMargin.KeyPress
      '// หากกด Enter
      If e.KeyChar = Chr(13) Then
            e.Handled = True
            '// เลื่อนไป Control ถัดไป
            SendKeys.Send("{TAB}")
      Else
            '// เช็คการกดคีย์ให้รับเฉพาะ 0 - 9 เท่านั้น
            e.Handled = CheckDigitOnly(Asc(e.KeyChar))
      End If
    End Sub

    ' / --------------------------------------------------------------------
    Private Sub txtTopMargin_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtTopMargin.KeyPress
      '// หากกด Enter
      If e.KeyChar = Chr(13) Then
            e.Handled = True
            '// เลื่อนไป Control ถัดไป
            SendKeys.Send("{TAB}")
      Else
            '// เช็คการกดคีย์ให้รับเฉพาะ 0 - 9 เท่านั้น
            e.Handled = CheckDigitOnly(Asc(e.KeyChar))
      End If
    End Sub

    ' / --------------------------------------------------------------------
    ' / ฟังค์ชั่นในการป้อนเฉพาะค่าตัวเลขได้เท่านั้น
    Function CheckDigitOnly(ByVal index As Byte) As Boolean
      Select Case index
            Case 48 To 57 ' เลข 0 - 9
                CheckDigitOnly = False
            Case 8, 13 ' Backspace = 8, Enter = 13
                CheckDigitOnly = False
            Case Else
                CheckDigitOnly = True
      End Select
    End Function

    Private Sub frmPrintEnvelope_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
      Me.Dispose()
      Application.Exit()
    End Sub

    Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
      Me.Close()
    End Sub

    Private Sub ToolStripStatusLabel2_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripStatusLabel2.Click
      Process.Start("http://www.facebook.com/g2gnet")
    End Sub
End Class

มาดูโค้ดในส่วนของ ActiveReports Designer ...
' / --------------------------------------------------------------------
' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
' / eMail : thongkorn@hotmail.com
' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
' / Facebook: https://www.facebook.com/g2gnet (For Thailand)
' / Facebook: https://www.facebook.com/commonindy (Worldwide)
' / Purpose : Print out standard envelope 23x11 cm. with ActiveReports.NET 6.0
' / Microsoft Visual Basic .NET (2010) SP1

' / This is open source code under @CopyLeft by Thongkorn Tubtimkrob.
' / You can modify and/or distribute without to inform the developer.
' / --------------------------------------------------------------------
Imports DataDynamics.ActiveReports
Imports DataDynamics.ActiveReports.Document

Public Class arPrintEnvelope

    Private Sub Detail1_Format(sender As System.Object, e As System.EventArgs) Handles Detail1.Format
      txtRecipient.Text = frmPrintEnvelope.txtAddress.Text
    End Sub

    Private Sub arPrintEnvelope_ReportStart(sender As Object, e As System.EventArgs) Handles Me.ReportStart
      ' จะเริ่มต้นการทำงานที่โปรแกรมย่อยตัวนี้

      ' การตั้งค่าแบบ Run Time (มีหน่วยวัดเป็นนิ้ว)
      With PageSettings
            .Margins.Left = 0.25
            .Margins.Right = 0.25
            .Margins.Top = 0.5
            .Margins.Bottom = 0.5
            ' ตั้งค่ากระดาษแนวตั้ง
            .Orientation = PageOrientation.Landscape
            ' ซองจดหมาย หรือ Envelope #10, ขนาด 4 1/8 x 9 1/2 in
            .PaperKind = Drawing.Printing.PaperKind.Number10Envelope

            ' กรณีที่กำหนดขนาดกระดาษเอง
            ' .PaperKind = Drawing.Printing.PaperKind.Custom
      End With
      ' ความสูงของการพิมพ์ Detail
      Detail1.Height = CmToInch(7.5) ' วัดระยะโดยประมาณ 7.5 ซม แต่แปลงเป็นนิ้ว)
      ' กำหนดระยะการพิมพ์ที่อยู่ (รับค่าเป็นมิลลิเมตรเข้ามาหาร 10 เป็น ซม. แล้วแปลงเป็นนิ้ว)
      txtRecipient.Top = ActiveReport.CmToInch(Val(frmPrintEnvelope.txtTopMargin.Text) / 10)
      txtRecipient.Left = ActiveReport.CmToInch(Val(frmPrintEnvelope.txtLeftMargin.Text) / 10)

      ' กำหนดฟอนต์
      txtRecipient.Font = frmPrintEnvelope.lblDataFont.Font

    End Sub
End Classสาระสำคัญในส่วนของ AR Designer คือ ReportStart จะเป็นการเริ่มต้นตั้งค่าการพิมพ์ และนำข้อมูลมาพิมพ์ที่โปรแกรมย่อย Detail1_Format ...


ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) และ AR6 ได้ที่นี่ ...



g2gsoftuser โพสต์ 2022-10-25 19:30:04

ขอบคุณครับ
หน้า: [1]
ดูในรูปแบบกติ: [VB.NET] โค้ดการพิมพ์ชื่อที่อยู่ผู้รับออกซองจดหมายขนาด 23x11 ซม. ด้วย ActiveReports .NET