Visual Basic

Home

Visual Basic Tutorial
Knowledge Developer Database Internet Resource
Intrinsic Control
1. Intrinsic Control
2. Text box
3. List box
4. กราฟฟิก
5. ตัว Control อื่นๆ
6. เมนู
7. Control Array
 
Visual Basic Tutorial
1. Visual Basic 6
2. ฟอร์ม
3. Intrinsic Control
4. ตัวแปรและ Procedure
5. Class
6. Common Control1
7. Common Control2
8. ActiveX Control
9. Interface
10. ฐานข้อมูล
11. Database Control
 
Developer
Visual Basic
Microsoft Access
Microsoft Excel
 

List Box และ Combo Box

List Box และ Combo Box ใช้สำหรับแสดงรายการให้ผู้ใช้เลือก และมีคุณสมบัติร่วมกันจำนวนมาก

List box

List box เป็นตัว control ที่ใช้แสดงรายการของตัวเลือก ตามค่าเริ่มต้นตัวเลือกจะแสดงเป็นคอลัมน์เดี่ยว แต่สามารถตั้งค่าให้เห็นหลายคอลัมน์ได้โดยตั้งค่าที่คุณสมบัติ Column ตามจำนวนคอลัมน์ที่ต้องการ ถ้าจำนวนตัวเลือกมีมากเกินกว่าที่จะแสดงได้ จะมีแถบเลื่อนให้โดยอัตโนมัติ

Private Sub Form_Load()
    lstSource.AddItem "Ayuthaya"
    lstSource.AddItem "Bangkok"
    lstSource.AddItem "Phuket"
    ' และข้อมูลต่อไป
End Sub

แต่ตามความจริงวิธีการที่สะดวกในการอ่านจากฐานข้อมูล จะใช้คำสั่งวนรอบ เช่น For…Next, Do…Loop

For i = LBound(myData) to UBound(myData)
    lstCode.AddItem myData(i)
Next

ในบางกรณีถ้าตัวเลือกมีมากอาจจะเก็บไว้ในไฟล์ข้อความ (Text file) ซึ่งสะดวกในการปรับปรุงค่า และเมื่อต้องการแสดงค่าจึงใช้การอ่านค่าเข้ามา

Private Sub Form_Load()
Dim Item As String
On Error Goto Error_Handler
    Open "list2.txt" For Input As #1
    Do Until EOF(1)
        Line Input #1, Item
        List2.AddItem Item
    Loop
    Close #1
Exit Sub

Error_Handler:
    MsgBox "ไม่สามารถโหลดข้อมูลของ List box"
End Sub

เมธอดในการเพิ่มตัวเลือก คือ AddItem และระบุตำแหน่งด้วยอากิวเมนต์ที่ 2

List1.AddItem "Zero", 0

การลบตัวเลือกออกจากรายการ ให้ใช้เมธอด RemoveItem หรือ Clear

List1.RemoveItem 0 ' ลบรายการแรก
List1.Clear ' ลบทั้งหมด

การค้นหาตัวเลือกที่ผู้ใช้เลือก คุณสมบัติ ListIndex จะส่งคืนค่าดัชนี ส่วนคุณสมบัติ Text ส่งข้อความ ถ้า ListIndex ส่งค่าเป็น -1 แสดงว่ายังไม่มีเลือก

If List1.ListIndex = -1 Then
    MsgBox "ไม่มีการเลือกข้อมูล"
Else
    MsgBox "ผู้ใช้เลือก " & List1.Text & " (#" & List1.ListIndex & ")"
End If

ส่วน ListCount ส่งค่าเป็นจำนวนตัวเลือกในตัว control ร่วมกับคุณสมบัติ List

For i = 1 To List1.ListCount - 1
    Print "Item #" & i & " = " & List1.List(i)
Next

เมื่อมีการวาด List box บนฟอร์ม มีคุณสมบัติที่เกี่ยวข้องไม่มากนัก เช่น คุณสมบัติ Sorted ถ้าตั้งค่าเป็น True จะเรียงลำดับตัวอักษร และถ้าต้องการรายการหลายคอลัมน์ ให้กำหนดคุณสมบัติ Column ให้เหมาะกับการแสดงรายการ
การเพิ่มรายการของ List box และ Combo box ใช้เมธอด AddItem ควรจะกำหนดที่ Form_Load eventแต่ถ้าเพิ่มรายการควรคำสั่งวนรอบ เช่น For… Next หรือ While… Loop เนื่องจากการอ่านค่าเพื่อแสดงรายการมักจะอ่านจากฐานข้อมูล

Multi Select

การย้ายข้างรายการแบบการเลือกหลายรายการ เช่น จาก List box ด้านซ้าย (lstSource) ไปที่ List box ด้านขวา (lstSelect) โดยคำสั่งใช้คุณสมบัติ ListCount เพื่อรับทราบจำนวนรายการที่เลือก และใช้ Do… Loop ในการจัดการย้าย สำหรับวิธีย้ายเป็นการเพิ่มรายการที่ lstSelect แล้วลบรายการจาก lstSource จึงทำให้สามารถเลือกรายการแบบหลายรายการ

Dim i As Long
Do While i < lstSource.ListCount
    If lstSource.Selected(i) Then
        lstSelect.AddItem lstSource.List(i)
        lstSource.RemoveItem i
    Else
        i = i + 1
    End If
Loop

สำหรับการเลือกรายการเดียวมีการเพิ่มเงื่อนไขการตรวจสอบ คุณสมบัติ MultiSelect และ SelCount

If lstSource.MultiSelect = False Or lstSource.SelCount = 0 Then
    If lstSource.ListIndex >= 0 Then
        lstSelect.AddItem lstSource.Text
        lstSource.RemoveItem lstSource.ListIndex
    End If
Else
    ' คำสั่ง การย้ายหลายรายการ
End If

Sub ButtonStatus เป็นการ Enabled และ Disabled เพื่อเป็นการยอมให้ทำงานตามสถานะที่เหมาะ เช่น ไม่มีรายการใน List box ด้านขวา (lstSelect) ปุ่ม cmdDeSel และ cmdDeSelAll ไม่ควรคลิกได้

ดาวน์โหลดตัวอย่าง (MultiSelectListBox.vbp)

Combo Box

Combo box เป็นตัว control ที่คล้ายกับ List box รวมการกำหนดคุณสมบัติต่าง ๆ ซึ่งวิธีการกำหนดคุณสมบัติของ List box สามารถนำมาใช้กับ Combo box ได้
Combo box มีลักษณะที่ผสมกันระหว่าง List box กับ Text box ทำให้มีคุณสมบัติ แบบ Text box หลายอย่าง เช่น Sel Start, Sel Length และ event เช่น KeyDown, KeyPress รวมถึง Click และ DblClick

ส่วนคุณสมบัติ Style ของ Combo box มี 3 แบบ คือ 0-DropDownCombo, 1-SimpleCombo และ 2-DropDownList ในรูปแบบ DropDown สามารถใช้เพิ่มรายการใน DropDown event

Private Sub cmdNumber_Drop Down ( )
    On Error Goto Error_Handler
    Dim Item As String

    Open "Customer.txt" For Input As #1
        Do Until EOF(1)
            Line Input #1, Item
            cmdNumber.AddItem Item
        Loop
    Close #1
Exit Sub

Error_Handler:
    MsgBox "ไม่สามารถโหลดข้อมูลเข้าสู่ Combo box data"
End Sub

 

  

สงวนลิขสิทธิ (C) widebase