Tài liệu Khóa Hàm Thụ Visual Basic 6.0_ Chương 7b doc - Pdf 87


Khóa Hàm Thụ Visual Basic 6.0
Chương Bảy - Dùng List Controls (bài thứ
ba)
Listbox
Search trong Text File
Ta biết rằng ListBox có thể chứa rất nhiều hàng text (con số hàng tối đa là
65535). Ta đã quen với việc hiển thị content của một text file trong một
Listbox. Ta đã dùng ListBox để display các Events (sự cố) xãy ra trong
real-time. Giả dụ, ta ghi lại tất cả mọi Events xãy ra trong real-time của
một hệ thống an ninh, tức là ta biết ai ra, vào cửa nào, lúc mấy giờ. Các
Events nầy vừa đuợc log xuống một Text file, vừa được cho vào một
ListBox để luôn luôn hiển thị Event mới nhất ở cuối ListBox.Khi đã có mọi
Events nằm trong ListBox, ta có thể Search (tìm kiếm) xem một người nào
đã đi qua những cửa nào của building bằng cách iterate qua từng hàng
trong ListBox và nhận diện một Text Pattern hàng với Function
InStr.Trong bài mẫu dưới đây, ta đánh tên của một người vào trong
TextBox rồi click nút Find và sau đó Find Next để highlight những Events
trong ListBox cho thấy những lúc tên người đó xuất hiện. Trong khi tìm
kiếm một Text Pattern ta có thể cho phép cả chữ Hoa , lẫn chữ Thường
bằng cách covert mọi text ra Uppercase trước khi làm việc với
chúng.
Listing của Sub Find_Click như sau:
Private Sub CmdFind_Click()
Dim i, ALine, FText
' Get out if the Listbox is empty
If EventList.ListCount = 0 Then
MsgBox "There 's no text available"
Exit Sub
End If
' Check if user has entered the Text Pattern

User đổi từ Disk Drive nầy qua Disk Drive khác, hay từ Folder nầy qua
Folder khác. Các hàng codes thực hiện việc nầy rất đơn giản như sau:
Private Sub Drive1_Change()
' Make Path of Folder same as new Drive
Dir1.Path = Drive1.Drive
End Sub
Private Sub Dir1_Change()
' Make Path of FileList same as new Path of Folder
' The filenames in the Folder will be displayed automatically in
FileListBox
FileList.Path = Dir1.Path
End Sub
Ta có thể chọn lựa chỉ những Filenames có một Extension nào đó (thí dụ
như log) bằng cách cho Property Pattern của FileListBox value
"*.log".Mỗi khi User click lên tên của một File, program sẽ load content
của File ấy vào ListBox EventList bên phải. Sau khi selected một số hàng
rồi, User có thể hoặc Print chúng ra bằng cách Click nút Print, hoặc Copy
chúng vào Clipboard bằng cách Click nút Copy. Bạn có thể download
source code của program LogFile.zip nầy để có đầy đủ.
Dùng ItemData
Nếu Property List của ListBox được xem như một Text Array thì
ItemData là một Number Array, và List1.ItemData(i) đi cặp với
List1.List(i). Tức là trong khi List1.List(i) hiển thị như mặt trước của một
tấm bản thì List1.ItemData(i) được coi như nằm ở mặt sau của tấm bản
ấy. Khi một List item thay đổi vị trí trong Listbox vì có sự biến đổi trong
ListBox (thí dụ Items bị removed hay được cho thêm vào) thì ItemData
của List item đó cũng đi theo với nó. Ta thử xem thí dụ sau. Cho vào một
Sorted Listbox tên của các nhân viên trong sở. Ngay sau khi tên một
nhân viên được cho vào Listbox thì Property NewIndex chứa vị trí của
item mới được cho vào ấy trong ListBox. Ta dùng giá trị NewIndex để

Dùng ListBox làm Queue
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ụ.
Private Sub CmdAddToQueue_Click()
Dim myRequest As String
Dim PersonId As String * 5
Dim PersonName As String * 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
End Sub
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.

Private Sub Timer1_Timer()


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status