การใช้งาน 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



*** ทดสอบรันโปรแกรม ***



ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ระบบ Login

ระบบ Add User