Title Forum
IndexIndex  CalendarCalendar  GalleryGallery  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
News & Announcements
  • Gallery & Others
  • Top posters
 N.H.M (706)
 nhuantrung0210 (323)
 TjaGoChangLj (227)
 GVRFnu-Bjn (190)
 lisaidong (122)
 phongngan1997 (94)
 puppy:x* (85)
 anhcudo01 (69)
 taoghetmay (68)
 anhlathe47 (45)
Similar topics

Share | 
 

 Chương Bảy - Dùng List Controls Bài 3 (Học Visual basic 6.0)

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
TjaGoChangLj
Administrator
Administrator


Thanked : 14


Bài gửiTiêu đề: Chương Bảy - Dùng List Controls Bài 3 (Học Visual basic 6.0)   16/6/2011, 1:47 pm

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:
<blockquote><blockquote>
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
If Trim(txtFind) = "" Then
MsgBox "Please enter the Text Pattern to search for"
Exit Sub
End If
' Clear all selected lines
For i = 0 To EventList.ListCount - 1
EventList.Selected(i) = False
Next
' Convert the Text Pattern to Uppercase
FText = UCase(txtFind.Text)
' Iterate through every line in the ListBox
For i = 0 To EventList.ListCount - 1
' Convert this line to Uppercase
ALine = UCase(EventList.List(i))
' If pattern exists in this line then highlight it
If InStr(ALine, FText) > 0 Then
EventList.Selected(i) = True ' Highlight the line
' Mark Current line as the Starting line for FindNext operation
If i < EventList.ListCount - 1 Then CurrentLine = i + 1
' get out
Exit Sub
End If
Next
' Only get here if Not found
MsgBox "Not found!"
End Sub
</blockquote></blockquote>
Trong bài nầy ta có dùng một DriveListBox để cho User chọn một Disk drive, một DirListBox để user chọn một Folder/Directory và một FileListBox để hiển thị tên của những Files trong một Folder.
Cả ba loại ListBoxes nầy liên kết nhau để cho ta thấy sự thay đổi ăn nhịp mỗi khi 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:
<blockquote><blockquote>
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
</blockquote></blockquote>
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 để assign ItemData với Số nhân viên ID. Khi User clicks lên
một tên trong Listbox, program sẽ hiển thị cả Số nhân viên ID lẫn tên
nhân viên. Ðể thử thí dụ nầy, bạn có thể Paste phần code dưới đây vào
phần Declaration của một Form có chứa một Listbox và một Label. Nhớ set
property Sorted của List1 ra True.

<blockquote></blockquote>
<blockquote>
Private Sub Form_Load()
' Fill List1 and ItemData array with
' corresponding items in sorted order.
List1.AddItem "John Green" ' Add an employee name
' Use NewIndex to synchronise with Employee ID
' Assign Employee ID to ItemData of the List Item
List1.ItemData(List1.NewIndex) = 62310
List1.AddItem "Tran The Tam"
List1.ItemData(List1.NewIndex) = 42859
List1.AddItem "Alan Bradshaw"
List1.ItemData(List1.NewIndex) = 63732
List1.AddItem "Peter Costello"
List1.ItemData(List1.NewIndex) = 34127
End Sub
Private Sub List1_Click()
' Fetch the employee number
Msg = List1.ItemData(List1.ListIndex) & " "
' Concatenate it with the employee name.
Msg = Msg & List1.List(List1.ListIndex)
' Assign string to Label to display
Label1.Caption = Msg
End Sub
</blockquote>


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ụ.
<blockquote>
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
</blockquote>

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.
<blockquote>

Private Sub 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
End If
End Sub
</blockquote>
<blockquote></blockquote>
Bạn có thể download source code của program QueueServer.zip nầy để chạy thử.

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:
<blockquote>
Private Sub CmdProcess_Click()
Dim Mess As String
' get out if there's nothing in the list
If List1.ListCount = 0 Then Exit Sub
' 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
End If
Next
' Display shopping list
MsgBox Mess, vbInformation, "Selected Shopping Items"
End Sub
</blockquote>
<blockquote></blockquote>
Listbox với nhiều cột


Listbox có một Property gọi là Columns.
Bình thường, Property Columns có giá trị 0. Nhưng nếu bạn cho nó bằng 3
chẳng hạn, thì Listbox sẽ cố gắng hiển thị 4 cột trong phạm vi chiều
ngang của Listbox. Nếu như thế vẫn không đủ hiển thị hết mọi Items trong
Listbox thì sẽ có một Horizontal Scrollbar hiện ra, và khi bạn click nó
qua bên phải Listbox sẽ cho hiển thị thêm các columns còn lại.
<blockquote></blockquote>

Combobox


Combobox rất giống như Listbox. Nó là
tập hợp của một Textbox nằm phía trên để User cho vào data và một
Listbox chứa các items mà User có thể lựa chọn khi mở nó ra. Combo box
cũng có những methods như Clear, AddItem và RemoveItem. Tuy nhiên, Combobox không có Property Selected, vì khi User chọn Item nào thì Item ấy được hiển thị trong Textbox phía trên.

Combobox có 3 styles. Drop-down Combo Style là thông dụng nhất.
Nó cho User nhiệm ý hoặc chọn một Item từ List hoặc đánh data vào
Textbox. Trong hình dưới đây User đánh vào chữ Elephant thay vì chọn từ
các Items có sẵn.
<blockquote></blockquote>
Drop-down List bắt buộc User phải chọn một trong những Item nằm
trong List, chớ không được đánh data mới vào Textbox. Ngay cả trong lúc
chạy program (at run-time) bạn cũng không thể Assign một value vào
property Text của Combobox loại nầy. Nhưng bạn có thể làm cho Combobox
hiển thị Item thứ 3 chẳng hạn bằng cách set property ListIndex của Combo
bằng 2.
Chữ Ký Cá Nhân

Về Đầu Trang Go down
Xem lý lịch thành viên
 

Chương Bảy - Dùng List Controls Bài 3 (Học Visual basic 6.0)

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Vn-Screen Forum :: Công Nghệ Thông Tin :: Khu Lập Trình :: Visual Basic-
VN-SCREEN.DARKBB.COM
Design by N.H.M - Developed by Vn-Screen Member
Free forum | Games | Các bài đã đưa Internet trò chơi | © phpBB | Free forum support | Liên hệ | Report an abuse | Free blog