ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 526|ตอบกลับ: 0

[VB.NET] การพิมพ์ QR Code (MessgaingToolKit.QRCode) ด้วยภาพกราฟิคลงใน ActiveReports

[คัดลอกลิงก์]

311

กระทู้

502

โพสต์

6060

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6060

หลายๆท่านอาจจะไม่ทราบว่า ActiveReports เวอร์ชั่น 6.2.3681.0 มีปัญหาที่ไม่สามารถเข้ารหัส (Encoding) UTF-8 เพื่อสร้างรหัสบาร์โค้ด QR Code ให้แสดงผลภาษาไทยได้ แต่เรามีวิธีการแก้ไขได้โดยการใช้ QR Code Library จากเหล่าบรรดาของฟรี ดังนั้นแอดมินจะขอนำเสนอทางออกให้ด้วยการใช้ MessagingToolkit.QRCode เพื่อสร้างรหัสบาร์โค้ด 2 มิติ หรือ QR Code โดยให้แสดงผลลงในกราฟิค (PictureBox) ในตัวรายงานของ ActiveReports 6.0 แทน ...


หน้าจอหลัก ...


การออกแบบรายงาน ...


Add References ...

คลิ๊กดาวน์โหลดไฟล์ MessagingToolkit.QRCode.DLL (ต้องใช้งานด้วยครับ)

ดาวน์โหลดชุดติดตั้ง ActiveReports .NET (V6.2.3681) ได้ที่นี่ (สำหรับสมาชิกเท่านั้น)

มาดูโค้ดต้นฉบับกันเถอะ ... (ฟอร์มหลัก)
  1. '// https://www.nuget.org/packages/MessagingToolkit.QRCode (Nuget)
  2. '// https://platform.twit88.com/projects/mt-barcode (Web)

  3. Public Class frmToolkitQRCode

  4.     Private Sub frmToolkitQRCode_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  5.         Dim rpt As New NewActiveReport1
  6.         ' / --------------------------------------------------------------------------------
  7.         ' / ส่วนที่สำคัญในการผูก ARDesigner เข้ากับรายงาน
  8.         ' / Instance name ARDesigner มันจะชี้ไปที่ไฟล์ NewActiveReport1.vb
  9.         ' / โหลดรายงาน Document (NewActiveReport1) เข้าสู่ ActiveReports Viewer
  10.         Me.Viewer1.Document = rpt.Document
  11.         ' / --------------------------------------------------------------------------------
  12.         ' / ปรับการย่อขยาย (Zoom) ของหน้ารายงาน
  13.         Viewer1.ReportViewer.Zoom = 1 ' 100%
  14.         ' / Run Report
  15.         rpt.Run()
  16.     End Sub

  17.     Private Sub frmToolkitQRCode_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  18.         Me.Dispose()
  19.         GC.SuppressFinalize(Me)
  20.         Application.Exit()
  21.     End Sub

  22. End Class
คัดลอกไปที่คลิปบอร์ด

โค้ดในส่วนของรายงาน ARDesigner ...
  1. Imports DataDynamics.ActiveReports
  2. Imports DataDynamics.ActiveReports.Document
  3. Imports MessagingToolkit.QRCode.Codec

  4. Public Class NewActiveReport1
  5.     Const MaxValue As Byte = 4
  6.     Dim Count As Byte = 0   '// นับจำนวนการพิมพ์ข้อมูล ตัวอย่างนี้มีข้อมูลอยู่ 5 ชุด คือ 0 - 4
  7.     '// Sample data.
  8.     Dim row As String() = New String() { _
  9.         "ทดสอบภาษาไทย QR Code พิมพ์ผ่าน ActiveReports 6.0", _
  10.         "MessagingToolkit.QRCode with ActiveReports 6.0", _
  11.         "https://line.me/ti/p/g2gnet", _
  12.         "http://www.g2gsoft.com/", _
  13.         "http://www.thongkorn.com" _
  14.     }

  15.     ' / --------------------------------------------------------------------------------
  16.     ' / (1) ส่วนของการตั้งค่าเริ่มต้นครั้งแรกครั้งเดียว
  17.     ' / จากนั้นมันจะกระโดดไปทำงานที่โปรแกรมย่อย FetchData
  18.     ' / --------------------------------------------------------------------------------
  19.     Private Sub NewActiveReport1_ReportStart(sender As Object, e As System.EventArgs) Handles Me.ReportStart
  20.         '/ การตั้งค่าหน้ากระดาษ
  21.         With PageSettings
  22.             '/ หน่วยวัดเป็นนิ้ว (ใช้ CmToInch ด้วยการรับค่าเซนติเมตร แต่แปลงเป็นนิ้วแทน เพื่อวัดระยะได้ง่ายกว่า)
  23.             '/ หากกำหนดขนาดกระดาษเกิน เวลาแสดงผลรายงาน จะมีแถบแนวตั้งสีแดงปรากฏ
  24.             .Margins.Left = CmToInch(0.75)
  25.             .Margins.Right = CmToInch(0.45)
  26.             .Margins.Top = CmToInch(1.5)
  27.             .Margins.Bottom = CmToInch(1.5)
  28.             '/ ตั้งค่ากระดาษแนวตั้ง
  29.             .Orientation = PageOrientation.Portrait
  30.             '/ กระดาษขนาด A4
  31.             .PaperKind = Drawing.Printing.PaperKind.A4
  32.             '/ กรณีที่กำหนดขนาดกระดาษเอง
  33.             '/ .PaperKind = Drawing.Printing.PaperKind.Custom
  34.         End With
  35.         '/ กระโดดไปที่โปรแกรมย่อย FetchData (2)
  36.     End Sub

  37.     ' / --------------------------------------------------------------------------------
  38.     ' / (2) ส่วนของการตรวจสอบจำนวนข้อมูล
  39.     ' / หาก Count มีค่ามากกว่า 4 ก็จะจบการทำงาน (eArgs.EOF = True)
  40.     ' / --------------------------------------------------------------------------------
  41.     Private Sub NewActiveReport1_FetchData(sender As Object, eArgs As DataDynamics.ActiveReports.ActiveReport.FetchEventArgs) Handles Me.FetchData
  42.         If Count > MaxValue Then
  43.             '/ หากหมดแล้วก็จบการพิมพ์
  44.             eArgs.EOF = True
  45.             'Exit Sub

  46.             '/ ยังไม่หมดข้อมูล
  47.         Else
  48.             eArgs.EOF = False
  49.             '/ กระโดดไปทำงานที่ Detail1_Format (3)
  50.         End If
  51.     End Sub

  52.     ' / --------------------------------------------------------------------------------
  53.     ' / (3) จาก FetchData หาก eArgs.EOF = False
  54.     ' / มันจะวนกลับมาพิมพ์ใหม่อีกรอบ
  55.     ' / --------------------------------------------------------------------------------
  56.     Private Sub Detail1_Format(sender As System.Object, e As System.EventArgs) Handles Detail1.Format
  57.         Dim QRCode As New QRCodeEncoder
  58.         Try
  59.             With picBarcode
  60.                 .Image = QRCode.Encode(row(Count), System.Text.Encoding.UTF8)
  61.                 .SizeMode = PictureBoxSizeMode.StretchImage
  62.             End With
  63.             lblURL.Text = row(Count)
  64.             Count = Count + 1 '// Increment Counter.
  65.         Catch ex As Exception
  66.             MessageBox.Show(ex.Message)
  67.         End Try
  68.         '/ กระโดดกลับไปที่โปรแกรมย่อย FetchData (2)
  69.     End Sub
  70. End Class
คัดลอกไปที่คลิปบอร์ด

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

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-4-30 02:51 , Processed in 0.134622 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้