Khóa Hàm Thụ Visual Basic 6.0 _Chương 7a
Số trang: 8
Loại file: pdf
Dung lượng: 0.00 B
Lượt xem: 25
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Cách dùng MultiSelect Cho đến giờ User click vào Listbox để chọn chỉ một Item. Khi một Item được chọn thì hàng ấy trở nên highlighted với background màu xanh đậm. Nếu kế đó ta click một hàng khác thì hàng cũ được display trở lại bình thường và hàng mới đuợc selected sẽ trở nên highlighted. Listbox cho ta có thể select nhiều Items cùng một lúc bằng cách set Property MultiSelect = ExtendedÐối với MultiSelected Listbox, ta chọn một nhóm Items liên tục bằng cách click Item đầu rồi nhấn nút Shift trong khi click Item cuối. Ta...
Nội dung trích xuất từ tài liệu:
Khóa Hàm Thụ Visual Basic 6.0 _Chương 7aKhóa Hàm Thụ Visual Basic 6.0Chương Bảy - Dùng List Controls (bài thứhai)ListboxCách dùng MultiSelectCho đến giờ User click vào Listbox để chọn chỉ một Item. Khi một Itemđược chọn thì hàng ấy trở nên highlighted với background màu xanh đậm.Nếu kế đó ta click một hàng khác thì hàng cũ được display trở lại bìnhthường và hàng mới đuợc selected sẽ trở nên highlighted.Listbox cho ta có thể select nhiều Items cùng một lúc bằng cách setProperty MultiSelect = ExtendedÐối với MultiSelected Listbox, ta chọn một nhóm Items liên tục bằng cáchclick Item đầu rồi nhấn nút Shift trong khi click Item cuối. Ta cũng có thểtiếp tục Select/Deselect thêm bằng cách ấn nút Ctrl trong khi click cácItems. Nếu ta click một Item chưa được selected thì nó sẽ trở nên selected(highlighted màu xanh), nếu ta click một Item đã được selected rồi thì nósẽ trở nên deselected (không còn màu xanh nữa). Thí dụ trong programbạn click Peter Jones, kế đó ấn nút Shift trong khi click Sue Rose, kếđó buông nút Shift ra để ấn nút Ctrl trong khi click Kevin White, bạn sẽcó những selected Items như trong hình dưới đây:Ngoài ra bạn cũng có thể MultiSelect nhiều Items trong một Listbox bằngcách dùng mouse để drag, tức là bạn click lên Item đầu rồi tiếp tục đèmousebutton trong khi kéo mousepointer đến Item cuối cùng mới buôngmousebutton ra.Cái Bug ác ônBây giờ giả sử ta muốn delete tất cả những Items vừa được selected(highlighted). Bạn hãy đặt một CommandButton mới tênCmdDeleteSelectedItems vào Form. Ta sẽ dùng Event Click của Buttonnầy để delete những selected Items. Một selected Item của lstNames sẽcó property Selected của nó bằng True. Tức là nếu Item thứ ba(ListIndex=2) được selected thì ta có lstNames.Selected(2) = True. Tacó ý định sẽ iterate through mọi Items của lstNames, để xem Item nàođược selected thì mình sẽ delete nó bằng cách dùng method RemoveItem.Ta sẽ viết code cho Sub CmdDeleteSelectedItems_Click() như sau:Private Sub CmdDeleteSelectedItems_Click() Dim i For i = 0 To lstNames.ListCount - 1 If lstNames.Selected(i) = True Then lstNames.RemoveItem i End If NextEnd SubBạn hãy chạy chương trình, click Load để populate lstNames với các tênđọc từ text file, rồi MultiSelect các tên như trong hình phía trên. Kế đóclick button DeleteSelectedItems. Program sẽ té (crash) và có hình nhưsau:Nếu bạn click nút Debug, program sẽ ngừng tại dòng code gặp error vàhighlight nó với background màu vàng. Ðể mousepointer lên trên chữ icủa lstNames.Selected(i), VB6 sẽ popup message nho nhỏ i = 4.Bạn để ý thấy trong hình lúc nầy lstNames chỉ còn có 4 Items (Ron,Trevor, John và Alan), vì các Items kia đã bị removed.Bạn có biết tại sao program crashed không? Ðó là vì program đang referđến property Selected của Item thứ năm ( ArrayIndex i = 4) của lstNamestrong khi lstNames bây giờ chỉ còn có 4 Items. Vì vậy program crashed vớimessage Runtime error 381: Invalid property array index.Thủ phạm của cái Bug ác ôn nầy là statement For i = 0 TolstNames.ListCount - 1. VB6 chỉ tính value của lstNames.ListCount -1một lần lúc khởi sự For..Loop mà thôi (tức là lstNames.ListCount -1 = 6),nó không lưu ý là ListCount giảm value mỗi lần một Item bị Removed.Ngoài ra ta thấy tên Trevor Kennedy cũng không bị removed, tức là nóbị lọt sổ nếu ta dùng For..Loop theo cách nầy. Lý do là sau khi ta RemovePeter Jones (Item thứ hai), Trevor Kennedy bị đẩy lên và trở thànhItem thứ hai mới. Kế đó ta increment value của i thành 2 rồi process Itemthứ ba, tức là Sue Rose, nên Trevor Kennedy không hề đượcprocessed.Bạn có thể download program có bug nầy để chạy thử cho biết.Sub CmdDeleteSelectedItems_Click cần phải được viết lại để dùng While... Loop, thay vì For...Loop. Trong While...Loop, lstNames.ListCount - 1được evaluated (tính) để test ở mỗi iteration. Khi nào ta Remove một Itemthì ta không increment i, vì Item ngay dưới removed Item được đẩy lên.Listing mới như sau:Private Sub CmdDeleteSelectedItems_Click() Dim i i = 0 Initialise value of i to start from first Item Note that lstNames.ListCount is evaluated freshly at each iteration Do While i Dưới đây là listing của Function HexDisplay để convert từ ASCII string raHexadecimal string.Function HexDisplay(InASCII) As String Convert an ASCII string to HEX string Dim InLen, i, msg, HexStr InLen = Len(InASCII) Get length of input string Convert each ASCII character to Hex For i = 1 To InLen HexStr = Hex(Asc(Mid(InASCII, i, 1))) If HEX has only one digit then prefix it with 0 If Len(HexStr) = 1 Then HexStr = 0 & HexStr msg = msg + HexStr & Next i HexDisplay = msg Return result string for FunctionEnd FunctionTrong program nầy, khi Listbox đạt đến 1000 items thì mỗi lần một hàngmới được thêm vào, hàng cũ nhất sẽ bị removed. Ðể cho hàng mới nhấtkhông bị dấu ta phải nhớ c ...
Nội dung trích xuất từ tài liệu:
Khóa Hàm Thụ Visual Basic 6.0 _Chương 7aKhóa Hàm Thụ Visual Basic 6.0Chương Bảy - Dùng List Controls (bài thứhai)ListboxCách dùng MultiSelectCho đến giờ User click vào Listbox để chọn chỉ một Item. Khi một Itemđược chọn thì hàng ấy trở nên highlighted với background màu xanh đậm.Nếu kế đó ta click một hàng khác thì hàng cũ được display trở lại bìnhthường và hàng mới đuợc selected sẽ trở nên highlighted.Listbox cho ta có thể select nhiều Items cùng một lúc bằng cách setProperty MultiSelect = ExtendedÐối với MultiSelected Listbox, ta chọn một nhóm Items liên tục bằng cáchclick Item đầu rồi nhấn nút Shift trong khi click Item cuối. Ta cũng có thểtiếp tục Select/Deselect thêm bằng cách ấn nút Ctrl trong khi click cácItems. Nếu ta click một Item chưa được selected thì nó sẽ trở nên selected(highlighted màu xanh), nếu ta click một Item đã được selected rồi thì nósẽ trở nên deselected (không còn màu xanh nữa). Thí dụ trong programbạn click Peter Jones, kế đó ấn nút Shift trong khi click Sue Rose, kếđó buông nút Shift ra để ấn nút Ctrl trong khi click Kevin White, bạn sẽcó những selected Items như trong hình dưới đây:Ngoài ra bạn cũng có thể MultiSelect nhiều Items trong một Listbox bằngcách dùng mouse để drag, tức là bạn click lên Item đầu rồi tiếp tục đèmousebutton trong khi kéo mousepointer đến Item cuối cùng mới buôngmousebutton ra.Cái Bug ác ônBây giờ giả sử ta muốn delete tất cả những Items vừa được selected(highlighted). Bạn hãy đặt một CommandButton mới tênCmdDeleteSelectedItems vào Form. Ta sẽ dùng Event Click của Buttonnầy để delete những selected Items. Một selected Item của lstNames sẽcó property Selected của nó bằng True. Tức là nếu Item thứ ba(ListIndex=2) được selected thì ta có lstNames.Selected(2) = True. Tacó ý định sẽ iterate through mọi Items của lstNames, để xem Item nàođược selected thì mình sẽ delete nó bằng cách dùng method RemoveItem.Ta sẽ viết code cho Sub CmdDeleteSelectedItems_Click() như sau:Private Sub CmdDeleteSelectedItems_Click() Dim i For i = 0 To lstNames.ListCount - 1 If lstNames.Selected(i) = True Then lstNames.RemoveItem i End If NextEnd SubBạn hãy chạy chương trình, click Load để populate lstNames với các tênđọc từ text file, rồi MultiSelect các tên như trong hình phía trên. Kế đóclick button DeleteSelectedItems. Program sẽ té (crash) và có hình nhưsau:Nếu bạn click nút Debug, program sẽ ngừng tại dòng code gặp error vàhighlight nó với background màu vàng. Ðể mousepointer lên trên chữ icủa lstNames.Selected(i), VB6 sẽ popup message nho nhỏ i = 4.Bạn để ý thấy trong hình lúc nầy lstNames chỉ còn có 4 Items (Ron,Trevor, John và Alan), vì các Items kia đã bị removed.Bạn có biết tại sao program crashed không? Ðó là vì program đang referđến property Selected của Item thứ năm ( ArrayIndex i = 4) của lstNamestrong khi lstNames bây giờ chỉ còn có 4 Items. Vì vậy program crashed vớimessage Runtime error 381: Invalid property array index.Thủ phạm của cái Bug ác ôn nầy là statement For i = 0 TolstNames.ListCount - 1. VB6 chỉ tính value của lstNames.ListCount -1một lần lúc khởi sự For..Loop mà thôi (tức là lstNames.ListCount -1 = 6),nó không lưu ý là ListCount giảm value mỗi lần một Item bị Removed.Ngoài ra ta thấy tên Trevor Kennedy cũng không bị removed, tức là nóbị lọt sổ nếu ta dùng For..Loop theo cách nầy. Lý do là sau khi ta RemovePeter Jones (Item thứ hai), Trevor Kennedy bị đẩy lên và trở thànhItem thứ hai mới. Kế đó ta increment value của i thành 2 rồi process Itemthứ ba, tức là Sue Rose, nên Trevor Kennedy không hề đượcprocessed.Bạn có thể download program có bug nầy để chạy thử cho biết.Sub CmdDeleteSelectedItems_Click cần phải được viết lại để dùng While... Loop, thay vì For...Loop. Trong While...Loop, lstNames.ListCount - 1được evaluated (tính) để test ở mỗi iteration. Khi nào ta Remove một Itemthì ta không increment i, vì Item ngay dưới removed Item được đẩy lên.Listing mới như sau:Private Sub CmdDeleteSelectedItems_Click() Dim i i = 0 Initialise value of i to start from first Item Note that lstNames.ListCount is evaluated freshly at each iteration Do While i Dưới đây là listing của Function HexDisplay để convert từ ASCII string raHexadecimal string.Function HexDisplay(InASCII) As String Convert an ASCII string to HEX string Dim InLen, i, msg, HexStr InLen = Len(InASCII) Get length of input string Convert each ASCII character to Hex For i = 1 To InLen HexStr = Hex(Asc(Mid(InASCII, i, 1))) If HEX has only one digit then prefix it with 0 If Len(HexStr) = 1 Then HexStr = 0 & HexStr msg = msg + HexStr & Next i HexDisplay = msg Return result string for FunctionEnd FunctionTrong program nầy, khi Listbox đạt đến 1000 items thì mỗi lần một hàngmới được thêm vào, hàng cũ nhất sẽ bị removed. Ðể cho hàng mới nhấtkhông bị dấu ta phải nhớ c ...
Tìm kiếm theo từ khóa liên quan:
Giáo dục dào tạo giáo trình đại học cao đẳng giáo trình tin học tin học ứng dụng Khóa Hàm Thụ Visual Basic 6.0Tài liệu có liên quan:
-
Giáo trình Tin học (Trình độ: Trung cấp nghề) - Trường Trung cấp nghề Củ Chi
268 trang 392 4 0 -
Tài liệu bồi dưỡng giáo viên sử dụng SGK Tin học 10 Cánh diều (Định hướng Tin học ứng dụng)
61 trang 301 0 0 -
122 trang 223 0 0
-
101 trang 211 1 0
-
Giáo Trình tin học căn bản - ĐH Marketing
166 trang 203 0 0 -
20 trang 192 0 0
-
Giáo trình Mạng máy tính (Nghề: Tin học ứng dụng - Trung cấp) - Trường Cao đẳng Cộng đồng Đồng Tháp
189 trang 174 0 0 -
175 trang 167 0 0
-
Giáo trình Tin học ứng dụng: Phần 1 - Trường ĐH Tài nguyên và Môi trường Hà Nội
125 trang 163 0 0 -
Hướng dẫn tạo file ghost và bung ghost
12 trang 161 0 0