Khi đi coi hát, ta thường phải đứng sắp hàng để mua vé. Cái hàng đó gọi là Queue. Mục đích của việc dùng Queue là để cho số người đông cần một dịch vụ sẽ được phục vụ lần lượt theo thứ tự ai đến trước sẽ được giải quyết trước. Nguyên tắc của Queue như thế được gọi là First-In-First-Out ( vào trước nhất, ra trước nhất). Ngược lại, nếu ai cũng muốn được phục vụ trước nhất ta sẽ có sự náo loạn, và rốt cuộc có thể chẳng có ai được giải quyết.
Thí dụ ta có một Form tên frmServer, mà trong đó có một Listbox tên List1. Nếu có nhiều Forms khác trong cùng một chương trình muốn nhờ frmServer phục vụ một chuyện gì, chúng sẽ Queue bằng cách Add một Item vào cuối List1. Trong Item có chứa những chi tiết mà frmServer sẽ cần biết để phục vụ.
PrivateSub CmdAddToQueue_Click() Dim myRequest AsString
Dim PersonId AsString * 5 Dim PersonName AsString * 20 ' Assign PersonId to fixed length text
PersonId = txtPersonId.Text
' Assign PersonName to fixed length text
PersonName = txtPersonName.Text ' Concatenate Id and Name
myRequest = PersonId & PersonName ' Queue the request
frmServer.List1.AddItem myRequest
EndSub
Bên frmServer, cứ mỗi 3 giây nó sẽ Remove Item trên hết ( tức là Index=0) trong List1 và xử lý Item ấy. Trong bài nầy ta chỉ Remove Item 0 rồi Add nó vào List2.
PrivateSub Timer1_Timer() Dim Item
If List1.ListCount > 0 Then
' Look at the item at the head of the queue
Item = List1.List(0)
' Process Item - just add it to List2 here
List2.AddItem Item ' Remove item from queue
List1.RemoveItem 0 EndIf
EndSub
CheckBox Listbox
Nếu bạn chọn value của Property Style của Listbox là CheckBox thay vì Standard thì mọi items trong Listbox sẽ có một hộp vuông phía trước để User có thể chọn lúc chạy program. Hộp vuông của item nào được checked (đánh dấu) thì Item ấy được Selected.
Giả sử ta có một Listbox List1 với Style Checkbox và có nhiều Items để mua trong siêu thị. Khi chạy progarm user chọn một số items rồi click nút Process, program sẽ hiển thị các item đã được chọn. Listing của Sub CmdProcess_Click như sau:
PrivateSub CmdProcess_Click() Dim Mess AsString
' get out if there's nothing in the list
If List1.ListCount = 0 ThenExitSub
' Iterate through every item of the checkBox Listbox
For i = 0 To List1.ListCount - 1
' If item is selected then include it in the shopping list
If List1.Selected(i) Then
' Append Item and a Carriage Return-LineFeed
Mess = Mess & List1.List(i) & vbCrLf EndIf
Next
' Display shopping list
EndSub