การใช้งาน ListBox
1. สร้างฟอร์มชื่อ ListBox Form
กำหนดค่าต่างๆดังนี้
1.1 สร้างป้ายชื่อ (Label) บริเวณส่วนหัวของฟอร์ม
ตั้งชื่อว่า Label0
ป้ายคำอธิบายว่า List Box
1.2 สร้างกล่องข้อความ
(Text Box) ตั้งชื่อเป็น
txt_box แหล่งควบคุมเป็น ="List" & [List1].[ListCount]+1
1.3 สร้างปุ่ม (Button) ตั้งชื่อเป็น Command1 ป้ายคำอธิบายเป็น Add
1.4 สร้างกล่องรายการ
(List Box) ตั้งชื่อเป็น List1 กำหนดเลือกหลายค่าเป็น ธรรมดา
ถ้าหาไม่เจอลองกดคุณสมบัติแถบอื่นๆ จะมีรายการน้อยลงจะหาง่ายขึ้น
1.5 สร้างกลุ่มตัวเลือก
(Frame) ตั้งชื่อเป็น Frame1
1.6 สร้างกล่องกาเครื่องหมาย
(Check Box) ตั้งชื่อเป็น
Check1 ตั้งค่าตัวเลือกเป็น 1 ระบุป้ายชื่อเป็น
ลบรายการที่เลือก
1.7 สร้างกล่องกาเครื่องหมาย (Check Box) ตั้งชื่อเป็น Check2 ตั้งค่าตัวเลือกเป็น
2 ระบุป้ายชื่อเป็น ลบทั้งหมด
1.8 สร้างปุ่ม (Button) ตั้งชื่อเป็น Command2 ป้ายคำอธิบายเป็น
Delete
1.9 สร้างปุ่ม
(Button) ตั้งชื่อเป็น Command4 ป้ายคำอธิบายเป็น >>
1.10 สร้างปุ่ม
(Button) ตั้งชื่อเป็น Command5 ป้ายคำอธิบายเป็น <<
1.11 สร้างกล่องรายการ
(List Box) ตั้งชื่อเป็น List2 กำหนดเลือกหลายค่าเป็น ธรรมดา
ถ้าหาไม่เจอลองกดคุณสมบัติแถบอื่นๆ จะมีรายการน้อยลงจะหาง่ายขึ้น
1.12 สร้างกลุ่มตัวเลือก
(Frame) ตั้งชื่อเป็น Frame2
1.13 สร้างกล่องกาเครื่องหมาย
(Check Box) ตั้งชื่อเป็น
Check11 ตั้งค่าตัวเลือกเป็น 1 ระบุป้ายชื่อเป็น
ลบรายการที่เลือก
1.14
สร้างกล่องกาเครื่องหมาย (Check Box) ตั้งชื่อเป็น
Check12 ตั้งค่าตัวเลือกเป็น 2
ระบุป้ายชื่อเป็น ลบทั้งหมด
1.15 สร้างปุ่ม
(Button) ตั้งชื่อเป็น Command3 ป้ายคำอธิบายเป็น Delete
2. กำหนดเหตุการณ์ต่างๆ
2.1 คลิกขวาตรงมุมซ้ายบนของฟอร์ม ListBox Form เลือกคุณสมบัติ
-
กำหนดจัดกึ่งกลางอัตโนมัติเป็น ใช่
-
กำหนดเหตุการณ์เมื่อโหลดเป็น
Private Sub Form_Load()
On Error GoTo Err_cmd
Me.List1.AddItem "List1"
Me.List1.AddItem "List2"
Me.List1.AddItem "List3"
Err_exit:
Exit Sub
Err_cmd:
MsgBox Err.Description
Resume Err_exit
End Sub
2.2 คลิกขวาที่ปุ่ม Command1เลือก สร้างเหตุการณ์ โดยกำหนดเหตุการณ์เป็น
Private
Sub Command1_Click()
On
Error GoTo Err_cmd
Me.List1.AddItem
Me.txt_box
Me.txt_box.SetFocus
Err_exit:
Exit Sub
Err_cmd:
MsgBox Err.Description
Resume Err_exit
End
Sub
2.3 คลิกขวาที่ปุ่ม
Command2 เลือก สร้างเหตุการณ์
โดยกำหนดเหตุการณ์เป็น
Private Sub Command2_Click()
On Error GoTo Err_cmd
If
Me.Frame1.Value = 1 Then
Call
checkList1(0)
ElseIf Me.Frame1.Value = 2
Then
Me.List1.RowSource = ""
Else
MsgBox " เลือกรายการลบ" ‘เวลาพิมพ์อาจจะเป็น
àÅ×Í¡ÃÒ¡ÒÃź อย่าตกใจ เพราะเป็นการกำหนด Font
End If
Err_exit:
Exit Sub
Err_cmd:
MsgBox Err.Description
Resume Err_exit
End Sub
2.4 คลิกขาวที่
Command4 เลือก สร้างเหตุการณ์
โดยกำหนดเหตุการณ์เป็น
Private Sub Command4_Click()
On Error GoTo Err_cmd
Call checkList1("move")
Err_exit:
Exit Sub
Err_cmd:
MsgBox Err.Description
Resume Err_exit
End Sub
2.5 จะสังเกตเห็นว่าหัวข้อ 2.3 และ 2.4 เรียกใช้ฟังก์ชั่น
checkList1 และมีตัวแปรในวงเล็บด้วย
ให้สร้างฟังก์ชั่น checkList1
ตามนี้
Sub checkList1(var)
On Error GoTo Err_cmd
Dim st As Variant
Dim sti As Variant
Dim x As Long
For i = 0 To Me.List1.ListCount - 1
If Me.List1.Selected(i) = True Then
If Len(st) = 0 Then st = i Else st = st & ";" & i
End If
Next i
sti = Split(st, ";")
If var = "move" Then
For i = 0 To UBound(sti)
x
= sti(i)
Me.List2.AddItem Me.List1.ItemData(x)
Next i
End If
For i = 0 To UBound(sti)
x
= sti(i) – i ‘ จุดนี้อาจจะซับซ้อนอยู่บ้าง
เพราะการลบรายการหลายรายการจะทำให้ลำดับมันเลื่อนขึ้น
ดังนั้นจึงต้องอ้างอิงด้วยการลบจำนวนครั้งที่วนลูปลบออกไป
Me.List1.RemoveItem (x)
Next i
Err_exit:
Exit Sub
Err_cmd:
MsgBox Err.Description
Resume Err_exit
End Sub
2.6 คลิกขาวที่
Command5 เลือก สร้างเหตุการณ์
โดยกำหนดเหตุการณ์เป็น
Private Sub Command5_Click()
On Error GoTo Err_cmd
Call checkList2("back")
Err_exit:
Exit Sub
Err_cmd:
MsgBox Err.Description
Resume Err_exit
End Sub
2.7 คลิกขาวที่
Command3 เลือก สร้างเหตุการณ์ โดยกำหนดเหตุการณ์เป็น
Private Sub Command3_Click()
On Error GoTo Err_cmd
If
Me.Frame2.Value = 1 Then
Call checkList2(0)
ElseIf Me.Frame2.Value = 2 Then
Me.List2.RowSource = ""
Else
MsgBox
" เลือกรายการลบ" ‘เวลาพิมพ์อาจจะเป็น
àÅ×Í¡ÃÒ¡ÒÃź อย่าตกใจ เพราะเป็นการกำหนด Font
End If
Err_exit:
Exit Sub
Err_cmd:
MsgBox Err.Description
Resume Err_exit
End Sub
2.8 จะสังเกตเห็นว่าหัวข้อ
2.6 และ 2.7 เรียกใช้ฟังก์ชั่น checkList2 และมีตัวแปรในวงเล็บด้วย ให้สร้างฟังก์ชั่น checkList2 ตามนี้
Sub checkList2(var)
On Error GoTo Err_cmd
Dim st As Variant
Dim sti As Variant
Dim x As Long
For i = 0 To Me.List2.ListCount
- 1
If Me.List2.Selected(i) = True Then
If Len(st) = 0 Then st = i Else st = st &
";" & i
End If
Next i
sti = Split(st, ";")
If var = "back" Then
For i = 0 To UBound(sti)
x
= sti(i)
Me.List1.AddItem Me.List2.ItemData(x)
Next i
End If
For i = 0 To UBound(sti)
x
= sti(i) - i
Me.List2.RemoveItem (x)
Next i
Err_exit:
Exit Sub
Err_cmd:
MsgBox Err.Description
Resume Err_exit
End Sub
3. สร้างปุ่มเพื่อแสดงฟอร์ม ListBox Form โดยการเปิด Main Form ในมุมมองออกแบบ
3.1 สร้างปุ่ม (Button) ตั้งชื่อเป็น Command1 ป้ายคำอธิบายเป็น
List Box
3.2 คลิกขวาที่ Command1 เลือก สร้างเหตุการณ์ โดยกำหนดเหตุการณ์เป็น
Private Sub Command1_Click()
If Me.Cmd_login.Caption = "Logout" Then
DoCmd.OpenForm "ListBox Form", acNormal, , , , acDialog
Else
MsgBox "Login !!!"
End If
End Sub
*** ทดสอบรันโปรแกรม ***
ความคิดเห็น
แสดงความคิดเห็น