' ส่วนของฟอร์ม
Imports DataDynamics.ActiveReports
Public Class frmPrintBarcode
Private Sub btnPrintPreview_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles btnPrintPreview.Click
' ดัก error จากการป้อนข้อมูล
If Trim(txtStartCode.Text) = "" Or Len(Trim(txtStartCode.Text)) = 0 Then ' VB6 Style
MessageBox.Show("กรุณาป้อนค่ารหัสเริ่มต้นให้เรียบร้อยก่อนด้วย.")
txtStartCode.Focus()
Exit Sub
ElseIf Trim(txtEndCode.Text) = String.Empty Then ' VB.Net Style
MessageBox.Show("กรุณาป้อนค่ารหัสสิ้นสุดให้เรียบร้อยก่อนด้วย.")
txtEndCode.Focus()
Return
End If
' ค่ารหัสสิ้นสุดน้อยกว่าค่าเริ่มต้นไม่ได้
If (Val(txtEndCode.Text) - Val(txtStartCode.Text) < 0) Then
MessageBox.Show("ค่ารหัสสิ้นสุดมีค่าน้อยกว่ารหัสเริ่มต้น กรุณาป้อนใหม่ก่อนด้วย.")
txtEndCode.Focus()
Return
End If
' Instance name ARDesigner มันจะชี้ไปที่ไฟล์ arBarcode.vb
Dim rpt As New arBarcode()
' Run Report
rpt.Run()
' โหลดรายงาน document (arBarcode) เข้าสู่ ActiveReports Viewer
Me.Viewer1.Document = rpt.Document
End Sub
Private Sub frmPrintBarcode_KeyDown( _
ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs _
) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.F7
Call btnPrintPreview_Click(sender, New System.EventArgs())
Case Keys.F10
Call btnExit_Click(sender, New System.EventArgs())
End Select
End Sub
Private Sub frmPrintBarcode_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load
With txtStartCode
.Text = "999999900"
.MaxLength = 9
End With
With txtEndCode
.Text = "999999999"
.MaxLength = 9
End With
' กำหนดความยาวของรหัสบาร์โค้ด
cmbLength.Items.Add("6") ' Index = 0
cmbLength.Items.Add("7") ' Index = 1
cmbLength.Items.Add("8") ' Index = 2
cmbLength.Items.Add("9") ' Index = 3
' เลือกรายการแรก คือ 6 เป็นค่าตั้งต้น
cmbLength.SelectedIndex = 0
End Sub
Private Sub btnExit_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles btnExit.Click
' จบการทำงานของโปรแกรม
Application.Exit()
End Sub
' Function บังคับให้ผู้ใช้งานกดได้เฉพาะ 0-9 เท่านั้นใน TextBox
' ผมใช้ ASCII Code เป็นเงื่อนไขในการทดสอบ
' ขอให้พิจารณาถึงความแตกต่างของการใช้ IF-THEN-ELSE กับ SELECT CASE
Function CheckDigitOnly(ByVal index As Integer) As Boolean
Select Case index
Case 48 To 57 ' Numeric 0 - 9
CheckDigitOnly = False
Case 8, 13, 46 ' Backspace = 8, Enter = 13, Delete = 46
CheckDigitOnly = False
Case Else
CheckDigitOnly = True
End Select
End Function
Private Sub txtStartCode_KeyPress( _
ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs _
) Handles txtStartCode.KeyPress
' อ่านรายละเอียดเพิ่มเติม
' ตรวจสอบการกดแป้นคีย์บอร์ดเพื่อให้รับค่าเฉพาะตัวเลข (VB.Net)
e.Handled = CheckDigitOnly(Asc(e.KeyChar))
End Sub
Private Sub txtEndCode_KeyPress( _
ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs _
) Handles txtEndCode.KeyPress
' จะกระโดดไปทดสอบค่าที่ฟังค์ชั่น CheckDigitOnly
' ASCII Code ของตัวอักขระ 0 - 9 โดยที่ 0 = 48, 1 = 49, 2 = 50, ... 9 = 57
e.Handled = CheckDigitOnly(Asc(e.KeyChar))
End Sub
Private Sub frmPrintBarcode_Resize( _
ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Resize
' ปรับ Control Size แบบง่ายๆ
With Me.Viewer1
.Width = Me.Width - 9.5
.Height = Me.Height - 110
End With
End Sub
End Class
|