|
การเขียนโปรแกรมด้วย Visual Basic ไม่ได้ง่ายๆเหมือนที่หลายๆคนคิด อันดับแรกต้องเรียนรู้การใช้งาน Control ต่างๆและสามารถควบคุมมันให้ได้ก่อนครับ ผมก็เลยเขียนโค้ดบางส่วนให้ได้นำไปศึกษาดูครับ ซึ่งเราจะเรียกว่า Run Time หรือโปรแกรมจะทำงานตามคำสั่งในขณะที่รันโปรแกรม ซึ่งจะมีประสิทธิภาพและมีความยืดหยุ่นสูงมาก จะทำให้เราสามารถควบคุมการทำงานของโปรแกรมได้ดีกว่า ...- Public Class frmBorrowMaterial
- Private Sub frmBorrowMaterial_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- '// Initialized DataGridView
- Call InitGridView()
- '// จำลองข้อมูลจาก DataTable มาแสดงผลใน ComboBox
- Call PopulateComboBox(cmbPlate, "PlatePK", "PlateName", GetTablePlate)
- Call PopulateComboBox(cmbStatus, "StatusPK", "StatusName", GetTableStatus)
- End Sub
- ' / --------------------------------------------------------------------------------
- ' / Load table detail into ComboBox
- Public Sub PopulateComboBox(ByRef cmbCtrl As ComboBox, strFieldPK As String, strFieldName As String, ByRef DT As DataTable)
- Try
- '/ Primary Key (ValueMember)
- cmbCtrl.ValueMember = strFieldPK
- '/ Display the name
- cmbCtrl.DisplayMember = strFieldName
- cmbCtrl.DataSource = DT
- '// Autocomplete
- With cmbCtrl
- '.DropDownStyle = ComboBoxStyle.DropDownList
- '.AutoCompleteMode = AutoCompleteMode.None
- '// สามารถคีย์ค่าลงได้
- .DropDownStyle = ComboBoxStyle.DropDown
- .AutoCompleteMode = AutoCompleteMode.SuggestAppend
- .AutoCompleteSource = AutoCompleteSource.ListItems
- End With
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
- End Sub
- Private Sub InitGridView()
- With dgvData
- ' Columns Specified
- .Columns.Add("BorrowPK", "BorrowPK")
- .Columns.Add("MemberID", "หมายเลขสมาชิก")
- .Columns.Add("LnbID", "หมายเลข LNB")
- .Columns.Add("DateBorrow", "วันที่เบิก")
- .Columns.Add("Status", "สถานะ")
- .Columns.Add("Plate", "ทะเบียน")
- End With
- '//
- With dgvData
- .RowHeadersVisible = False
- .AllowUserToAddRows = False
- .AllowUserToDeleteRows = False
- .AllowUserToResizeRows = False
- .MultiSelect = False
- .SelectionMode = DataGridViewSelectionMode.FullRowSelect
- .ReadOnly = True
- '//
- .Font = New Font("Tahoma", 9)
- .RowTemplate.Height = 26
- .RowTemplate.MinimumHeight = 26
- .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
- '// Even-Odd Color
- .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue
- ' Adjust Header Styles
- With .ColumnHeadersDefaultCellStyle
- .BackColor = Color.Navy
- .ForeColor = Color.Black
- .Font = New Font("Tahoma", 9, FontStyle.Bold)
- .WrapMode = DataGridViewTriState.False
- End With
- End With
- End Sub
- '// ทำข้อมูลตัวอย่างเก็บไว้ใน DataTable
- Function GetTablePlate() As DataTable
- Dim DT = New DataTable
- '/ Add columns.
- DT.Columns.Add("PlatePK", GetType(Integer))
- DT.Columns.Add("PlateName", GetType(String))
- '//
- DT.Rows.Add(1, "กข ขอนแก่น 1234")
- DT.Rows.Add(2, "ออ หนองคาย 5555")
- DT.Rows.Add(3, "ขข อุดรธานี 7890")
- DT.Rows.Add(4, "บบ นครราชสีมา 1111")
- DT.Rows.Add(5, "ดด เชียงใหม่ 5050")
- '//
- Return DT
- End Function
- Function GetTableStatus() As DataTable
- Dim DT = New DataTable
- '/ Add columns.
- DT.Columns.Add("StatusPK", GetType(Integer))
- DT.Columns.Add("StatusName", GetType(String))
- '//
- DT.Rows.Add(1, "พร้อมใช้งาน")
- DT.Rows.Add(2, "ซ่อมบำรุง")
- DT.Rows.Add(3, "จำหน่าย")
- '//
- Return DT
- End Function
- Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
- '// เช็คค่าว่าง
- If txtMemberID.Text = "" Or txtLNB.Text = "" Then Exit Sub
- '// เพิ่มแถวใหม่ และคำนวณหาค่าสูงสุดในหลักแรก (Index = 0)
- Dim MaxRow As Integer = 0
- For i As Integer = 0 To dgvData.Rows.Count() - 1 Step 1
- If i = 0 Then
- MaxRow = dgvData.Rows(i).Cells(0).Value
- Exit For
- End If
- If MaxRow < dgvData.Rows(i).Cells(0).Value Then
- MaxRow = dgvData.Rows(i).Cells(0).Value
- End If
- Next
- MaxRow += 1
- '//
- Dim row As String() = New String() {MaxRow, txtMemberID.Text, txtLNB.Text, Format(dtpBorrow.Value, "dd/MM/yyyy"), cmbStatus.Text, cmbPlate.Text}
- dgvData.Rows.Add(row)
- '// Clear value
- txtMemberID.Clear()
- txtLNB.Clear()
- txtMemberID.Focus()
- End Sub
- Private Sub btnRemove_Click(sender As System.Object, e As System.EventArgs) Handles btnRemove.Click
- '// ลบรายการแถวที่เลือกออกไป
- If dgvData.RowCount = 0 Then Exit Sub
- dgvData.Rows.Remove(dgvData.CurrentRow)
- txtMemberID.Focus()
- End Sub
- End Class
คัดลอกไปที่คลิปบอร์ด
|
|