MỤC TIÊU: SAU KHI HOÀN THÀNH CÁC BÀI TẬP, NGƯỜI HỌC CÓ THỂ
¾ Sửdụng được hầu hết các điều khiển nâng cao đi kèm với Visual Basic và
một số điều khiển nâng cao thông dụng từcác hãng thứ3 –Third party.
¾ Lựa chọn được các điều khiển phù hợp khi viết chương trình.
¾ Xây dựng được một số ứng dụng với các điều khiển nâng cao.
32 trang |
Chia sẻ: oanh_nt | Lượt xem: 1357 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài tập lập trình hướng sự kiện: Sử dụng các điều khiển nâng cao, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 94
Ch−¬ng iV
Sö dông c¸c ®iÒu khiÓn n©ng cao
MỤC TIÊU: SAU KHI HOÀN THÀNH CÁC BÀI TẬP, NGƯỜI HỌC CÓ THỂ
¾ Sử dụng được hầu hết các điều khiển nâng cao đi kèm với Visual Basic và
một số điều khiển nâng cao thông dụng từ các hãng thứ 3 –Third party.
¾ Lựa chọn được các điều khiển phù hợp khi viết chương trình.
¾ Xây dựng được một số ứng dụng với các điều khiển nâng cao.
A - ĐỀ BÀI TẬP
Bài 1: Minh hoạ sử dụng điều khiển Carlendar (Lịch)
Giới thiệu: Điều khiển Carlendar nằm trong thư viện , có
chức năng hiển thị như một cuốn lịch điện tử. Đồng thời cũng được dùng để cho
phép người dùng chọn trực quan ngày, tháng, năm trong một số ứng dụng.
Hình 4.1 – Giao diện chương trình
Yêu cầu:
• Khi người dùng click nút thì hiển thị lịch của tháng trước.
• Khi người dùng click nút thì hiển thị lịch của tháng tiếp theo
• Khi người dùng click nút thì hiển thị lịch của năm trước
• Khi người dùng click nút thì hiển thị lịch của năm tiếp theo
• Khi người dùng click nút thì trở về ngày hiện tại
• Khi người dùng click nút thì thay ngày tháng năm trong máy
tính bằng ngày tháng năm đang được chọn trong Calendar.
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 95
Bài 2: Minh hoạ sử dụng điều khiển truyền thông nối tiếp Comm Control
Giới thiệu: Điều khiển MSComm nằm trong thư viện , cung
cấp cho ứng dụng khả năng truyền thông nối tiếp bằng cách truyền và nhận dữ liệu
thông qua cổng nối tiếp (Serial Port).
Hình 4.2 – Giao diện chương trình và đặt tên cho các điều khiển
Yêu cầu:
• Xây dựng ứng dụng như hình 2.
• Khi người dùng click thì mở cổng có số hiệu trong điều
khiển .
• Khi click thì đóng cổng hiện hành.
• Khi click thì gửi lệnh và dữ liệu chứa trong cboCommand
Bài 3 : Minh hoạ điều khiển FlexGrid
Giới thiệu: Điều khiển MSFlexGrid nằm trong thư viện rol có
chức năng hiển thị và thao tác dữ liệu ở dạng bảng (Tabular). Nó hoàn toàn cho
phép sắp xếp, trộn và định dạng bảng có chứa xâu ký tự và hình ảnh. Khi gắn kết với
các điều khiển Data, MSFlexGrid chỉ hiển thị dữ liệu ở chế độ Read-Only.
Hình 4.3 – Giao diện và đặt tên cho các điều khiển (tên được in đậm)
Yêu cầu:
• Khi click nút "Thêm" thì thêm một bản ghi trong các Textbox vào FlexGrid
• Khi click nút "Xoá" thì xoá dòng đang được chọn trong FlexGrid
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 96
• Khi click nút "Cập nhật" thì đặt nội dung của dòng hiện hành bằng nội dung
trong các hộp Text tương ứng.
• Khi click nút "Lưu ra File" thì lưu nội dung FlexGrid ra file Text, mỗi bản ghi
trong FlexGrid được ghi trên một dòng của file.
Bài 4 : Minh hoạ sử dụng điều khiển Web brower và HTML Object Library.
Giới thiệu : Điều khiển Web Browser đóng vai trò như một trình duyệt IE, do vậy cho
ta phép nhúng vào trong ứng dụng để mở và thao tác với trang web bằng các lệnh
của VB. Để truy cập (đọc / ghi) nội dung chứa trong các đối tượng của trang web
(nút nhấn, textbox...) thì cần phải có thư viện HTML Object Library. Trong trường
hợp ứng dụng chỉ mở các trang web thì không cần đến thư viện này.
Hai thành phần này nằm trong và
Hình 4.4 – Giao diện chương trình
Yêu cầu:
• Khi chương trình bắt đầu, một trang web trắng (Blank) sẽ được mở.
• Khi click nút "Mở" thì mở trang có địa chỉ nằm trong txtURL
• Khi click nút "Tạo nút nhấn và Textbox" thì tạo ra một hộp text và một nút
nhấn trong trang Web.
• Khi click nút "Ghi giá trị vào Text" thì cho người dùng nhập một xâu ký tự và
chèn xâu này vào hộp Text vừa tạo ra trong trang web
• Khi click nút "Đọc giá trị trong Textbox" thì đọc nội dung trong hộp Text vừa
tạo ra và hiển thị ra màn hình bằng hàm Msgbox.
• Khi click nút "Thêm "Hello"" thì thêm một dòng "Hello" có màu xanh vào trong
trang web.
Bài 5: Minh hoạ sử dụng Internet Control
Giới thiệu: Điều khiển Internet cài đặt 2 giao thức
được sử dụng rộng rãi nhất đó là giao thức HyperText Transfer Protocol (HTTP) và
File Transfer Protocol (FTP).
Sử dụng giao thức HTTP, chúng ta có thể lấy về các trang Web từ Internet, còn giao
thức FTP cho phép đăng nhập vào máy chủ FTP để Download (lấy về) và Upload
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 97
(Gửi lên) các file. Ngoài ra, các lệnh trong giao thức FTP như SEND, PUT, PWD….
cũng được điều khiển này hỗ trợ.
Yêu cầu: Xây dựng một chương trình cho phép người dùng Download các file từ
Internet về máy tính cục bộ. Các file này sau đó có thể mở theo yêu cầu.
Hình 4.5 – Giao diện và đặt tên cho các điều khiển
Bài 6. Sử dụng điều khiển Multimedia MCI để chơi các file nhạc và hình
Giới thiệu: điều khiển Multimedia MCI ( ) được dùng để ghi
và chơi các file nhạc và hình. Các dạng file mà điều khiển này hỗ trợ là các file Wav
(WaveAudio), các file trên đĩa CD (CDAudio), các file hình (DAT), file hình AVI..
Hình 4.6 – Giao diện chương trình và tên cho các điều khiển
Yêu cầu:
• Xây dựng chương trình với giao diện như hình 6
• Khi người dùng click nút thì mở hộp thoại chọn file và chơi file này.
Bài 7: Sử dụng Script Control để tính toán biểu thức bất kỳ được nhập từ bàn
phím trong khi chương trình chạy.
Giới thiệu: Điều khiển Script ( ) cho phép định giá (Eval)
một biểu thức bất kỳ khi chương trình đang chạy. Nó khắc phục được hạn chế trong
các chương trình trước đây là biểu thức cần tính toán phải được nhập trước và khi
đã dịch ra file exe rồi thì không thể thay đổi được. Muốn thay đổi biểu thức tính toán
thì phải sửa đổi chương trình nguồn sau đó dịch lại ra file EXE. Ngoài khả năng định
giá (tính) một biểu thức, Script control còn có khả năng rất mạnh khác là có thể thêm
các lệnh (như khai báo biến, khai báo thủ tục, các lệnh rẽ nhánh v.v… của VB) trong
khi chương trình chạy. Ở đây chỉ xin giới thiệu khả năng thứ nhất.
Yêu cầu:
• Xây dựng giao diện như hình 7
• Khi người dùng nhập một biểu thức trong textbox và click nút "Hiển thị…" thì
hiển thị kết quả tính toán được bằng hàm MsgBox.
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 98
Hình 4.7 – Giao diện chương trình và kết quả chạy chương trình
Bài 8: Sử dụng điều khiển SSTab và viết chương trình cờ CARO đơn giản
Giới thiệu: SSTab nằm trong thư viện là một điều
khiển hoạt động giống như một đối tượng chứa (tức cho các các điều khiển khác đặt
lên). Các điều khiển có thể đặt trong nhiều trang (còn gọi là Page hay TAB) khác
nhau của SSTab, do vậy giúp chúng ta không phải tạo ra nhiều Form. Trong bài tập
này, chúng ta sẽ sử dụng SSTab kết hợp với điều khiển FlexGrid để viết một chương
trình chơi cờ Caro đơn giản. (Có thể kết hợp với bài tập 37 - Chương 1 sẽ được
chương trình hoàn chỉnh hơn)
Hình 4.8 – Giao diện và tên của các điều khiển
Yêu cầu:
• Chương trình cho phép 2 người dùng sử dụng chuột để chơi
• Khi người dùng click vào một ô trong Flexgrid thì đặt vào các ký hiệu là "X"
hoặc "O".
• Thứ tự người đi trước có thể thay đổi.
• Số ô cũng có thể thay đổi.
• Khi người dùng click vào "Ván mới" thì xoá bàn cờ và bắt đầu chơi ván mới.
Bài 9: Sử dụng thanh tiến trình (Progressbar)
Giới thiệu: Thanh tiến trình nằm trong thư viện
thường được sử dụng để hiển thị một cách trực quan tiến trình một công việc, giúp
cho người dùng thấy được trực quan công việc đã thực hiện được bao nhiêu %.
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 99
Hình 4.9 – Giao diện chương trình khi chạy
Yêu cầu: Copy nội dung từ file nguồn và lưu sang file đích. Trong quá trình copy có
hiển thị tiến trình copy và % dung lượng đã copy được bằng Pgrogressbar.
Bài 10: Sử dụng điều khiển ImageCombo box
Giới thiệu: Điều khiển ImageCombo nằm trong là
một phiên bản của điều khiển ComboBox chuẩn nhưng có thêm khả năng hiển thị
ảnh (biểu tượng) với từng mục trong danh sách. Ngoài ra, ImageCombo ưu việt hơn
ComboBox ở chỗ, ComboBox thì chỉ có thuộc tính List để lưu trữ các mục dữ liệu
trong khi đó
Hình 4.10 – Giao diện khi chạy chương trình.
Yêu cầu:
• Nạp một số mục vào ImageCombo có kèm thêm biểu tượng.
• Khi người dùng click nút "Gửi thông báo" thì gửi thông báo trong hộp Text đến
máy tính đã được chọn trong ImageCombo sử dụng dịch vụ Net Send của hệ
điều hành Windows 2K, XP.
Bài 11 : Sử dụng điều khiển Listview
Giới thiệu: Điều khiển ListView nằm trong được
sử dụng để hiển thị một danh sách các mục dữ liệu, trong đó mỗi mục lại có nhiều
thuộc tính đi cùng (ví dụ mỗi mục thông tin về sinh viên có thể gồm họ tên, ngày sinh,
quê quán...). Điều khiển ListView hỗ trợ 4 cách hiển thị khác nhau là Icon, SmallIcon,
List và Report. Bài tập sau đây sẽ hướng dẫn bạn cách sử dụng điều khiển này với
các thao tác "Chèn thêm" và "đọc" giá trị của các mục. Ngoài ra, còn giới thiệu một
số thuộc tính hay dùng của điều khiển ListView này.
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 100
Hình 4.11 – Giao diện và kết quả chạy chương trình mẫu
Yêu cầu:
• Thiết kế giao diện như hình 11 (Tên các điều khiển được đặt ở bên cạnh)
• Cho phép thêm một hàng (mục) mới vào Listview khi click nút "Thêm bản ghi"
• Hiển thị ra màn hình giá trị của nhiều mục được chọn khi click nút "Đọc các
hàng đang chọn" (Khi chế độ Chọn nhiều hàng được ;) bằng hàm
Debug.Print. Mỗi hàng trên một dòng, mỗi trường cách nhau 1 dấu TAB.
• Đọc và hiển thị giá trị của hàng đang được chọn bằng hàm MsgBox khi click
nút "Đọc hàng hiện tại".
• Cho người dùng chọn 1 trong 4 chế độ hiển thị.
Bài 12: Sử dụng điều khiển TreeView
Giới thiệu: Điều khiển TreeView nằm trong được
sử dụng để trình bày dữ liệu dưới dạng phân cấp (Hình cây).
Bài tập sau đây minh hoạ các thao tác chèn (Add), Xoá (Remove), Duyệt (đọc giá
trị) các nút trong cây và xử lý sự kiện click chuột khi click lên 1 nút của cây.
Yêu cầu:
• Xây dựng giao diện như hình 12 (có thể có biểu tượng hoặc không)
• Thực hiện các chức năng khi người dùng click vào các nút tương ứng. Việc
đọc giá trị của mỗi nút bao gồm giá trị của trường "Key" và trường "Text".
• Khi người dùng click vào một nút trên cây thì hiển thị giá trị của trường "Key"
và trường "Text" của nút đó trong một thanh trạng thái (staThongTinThem).
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 101
Hình 4.12 – Giao diện khi chạy chương trình mẫu & đặt tên các điều khiển
Bài 13: Sử dụng DateTimePicker để nhập trực quan ngày/tháng/năm.
Giới thiệu
Hình 4.13 – Giao diện chương trình khi chạy và tên của các điều khiển
Bài 14: Sử dụng điều khiển Window Media Player, viết chương trình chơi nhạc
Giới thiệu: WMP là một điều khiển cho phép lập trình để xây dựng các ứng dụng đa
phương tiện (Chơi các file nhạc hình, nhạc tiếng)
Hình 4.14 – Giai diện của form : frm4_14
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 102
Hình 4.15 – Giao diện chương trình của form: frm4_14_Setting
B- HƯỚNG DẪN - GIẢI MẪU
Bài 1
a. Hướng dẫn: Tên các thuộc tính và phương thức của điều khiển này bản thân nó
đã nói lên chức năng của chúng. Do vậy chúng ta có thể tra cứu về điều khiển
Calendar trong bộ MSDN. (Cách tra cứu nhạn: Trong khi lập trình, click vào điều
khiển Calendar và nhấn phím F1).
b. Chương trình mẫu:
Form1.frm
Option Explicit
'/// Chuyển sang tháng tiếp theo
Private Sub cmdNextMonth_Click()
Calendar1.NextMonth
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
/// Chuyển sang năm tiếp theo
Private Sub cmdNextYear_Click()
Calendar1.NextYear
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
'//// Chuyển sang tháng trước tháng hiện tại
Private Sub cmdPrevMonth_Click()
Calendar1.PreviousMonth
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
//// Chuyển sang năm trước năm hiện tại
Private Sub cmdPrevYear_Click()
Calendar1.PreviousYear
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
'/// Đặt lại ngày tháng năm bằng với ngày tháng năm vừa chọn (ví dụ 15/1/2006)
Private Sub cmdSetdate_Click()
Date = Calendar1.Value
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 103
'/// Hiển thị ngày tháng hiện hành trong máy tính
Private Sub cmdToday_Click()
Calendar1.Today
End Sub
c. Chú ý:
• Điều khiển Calendar thường được sử dụng trong các chương trình để người
dùng nhập vào ngày, tháng và năm.
• Khi muốn nhận về cả ngày/tháng/năm thì lấy thuộc tính Value, còn nếu muốn
nhận từng thành phần riêng lẻ thì lấy thuộc tính Day, month, year…
Bài 2
a. Hướng dẫn: Điều khiển COM có thể được sử dụng để truyền thông (Giao tiếp) với
bất kỳ thiết bị nào được nối và tương thích với cổng này. Việt thiết lập các thông số
kết nối tương đối đơn giản, chỉ cần đặt số hiệu cổng (Com 1, 2, 3…) sau đó mở kết
nối bằng cách đặt thuộc tính PortOpen = True. Riêng đối với một số trường hợp đặc
biệt thì cần đặt lại một số thông số khác.
Khi làm việc, điều khiển Com này có 2 cách để lấy dữ liệu do các thiết bị khác gửi
đến Cổng Com, cách thứ nhất là luôn luôn thăm dò (Polling) cổng và nhận dữ liệu
về; cách thứ 2 là khi dữ liệu được gửi đến thì sự kiện OnComm xuất hiện và ta lấy
dữ liệu về thông qua thuộc tính Input. Chương trình mẫu dưới đây sử dụng cách
nhận dữ liệu thứ 2 và thực hiện giao tiếp với Modem. Æ Có thể tham khảo thêm
trong MSDN.
b. Chương trình mẫu (Giao tiếp với Modem):
Form1.frm
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'///---------------------------------------------------------------------------------------------------------------------------------
'/// Thực hiện mở cổng COM khi người dùng click nút Open
Private Sub cmdOpen_Click()
On Error GoTo err '/// Sử dụng cơ chế bắt lỗi
comModem.CommPort = Val(cboPort.Text) '/// đặt cổng để giao tiếp
comModem.PortOpen = True '/// mở cổng
cmdClose.Enabled = True '/// đặt trạng thái cho các nút
cmdOutput.Enabled = True '/// … (Có thể bỏ qua)
cmdOpen.Enabled = False
Exit Sub
err:
If cboPort.Text = "" Then
MsgBox "Hãy chọn cổng COM cần mở!", vbInformation, "Chọn COM Port"
Else
MsgBox "Không thể mở cổng COM " & cboPort.Text, vbCritical, "Failed"
End If
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'/// Đóng cổng COM đang mở
Private Sub cmdClose_Click()
On Error GoTo err
comModem.PortOpen = False
cmdOutput.Enabled = False
cmdClose.Enabled = False
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 104
cmdOpen.Enabled = True
Exit Sub
err:
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'/// Gửi lệnh ra cổng COM khi click nút OutPut
Private Sub cmdOutput_Click()
On Error GoTo err
Dim Buffer As String
comModem.Output = cboCommand.Text & Chr$(13)
Exit Sub
err:
lstReceived.AddItem err.Description, 0
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
'/// Sự kiện này được kích hoạt mỗi khi có dữ liệu gửi đến cổng COM
Private Sub comModem_OnComm()
Sleep 200 '///chờ 200 ms. (Cần phải có vì Modem thường bị trễ)
Dim Buffer As String
Buffer = comModem.Input
Buffer = "onCom : " & Buffer
lstReceived.AddItem Buffer, 0
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
Private Sub Form_Load()
'/// Bạn cần xem thiết bị nối với cổng Com có số hiệu là Com mấy và đặt cho phù hợp
cboPort.Text = "1" '/// Giả sử là cổng Com1
'/// Thêm một số lệnh cơ bản về Modem (Có thể tham khảo tập lệnh của Modem)
cboCommand.Text = "AT" '/// Lệnh kiểm tra modem
cboCommand.AddItem "AT"
cboCommand.AddItem "AT VCID = 1"
cboCommand.AddItem "AT# CID"
cboCommand.AddItem "ATDT 0912068582"
cboCommand.AddItem "ATDT 713319" '/// Quay (gọi) điện đến số 713319
cboCommand.AddItem "ATDT 713153"
End Sub
Bài 3
a. Hướng dẫn: Sử dụng thuộc tính Row, Col để chuyển đến ô cần tham chiếu, ví dụ
cần chuyển đến ô có chỉ số hàng là 10, cột là 20 thì chỉ cần đặt Row = 10, Col = 20.
Muốn lấy hoặc thay đổi giá trị của một ô ở hàng i, cột j thì viết theo cú pháp:
TextMaTrix(i,j).
b. Chương trình mẫu.
Form1.frm
Option Explicit
Dim SL_BanGhi As Integer '/// Biến lưu số lượng bản ghi đã thêm vào
'/// Khi người dùng click vào ô nào thì biến Row và Col sẽ lưu chỉ số hàng và cột của ô đó
'/// Hàm Round(X,N) trả về giá trị làm tròn số X đến n chữ số sau dấu chấm.
Private Sub cmdCapnhat_Click()
Dim DongHienTai As Integer
DongHienTai = flxDanhSach.Row '/// Lấy dòng hiện tại đang được chọn
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 105
With flxDanhSach '/// sử dụng từ khoá with để tránh viết lại tên
.TextMatrix(DongHienTai, 1) = txtHoVaTen.Text
.TextMatrix(DongHienTai, 2) = txtPascal.Text
.TextMatrix(DongHienTai, 3) = txtC.Text
.TextMatrix(DongHienTai, 4) = txtVB.Text
.TextMatrix(DongHienTai,5)=(Val(txtPascal.Text)+Val(txtC.Text)+Val(txtVB.Text)) / 3
.TextMatrix(DongHienTai, 5) = Round(.TextMatrix(DongHienTai, 5), 1)
End With
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
'/// Ghi danh sách nhập vào FlexGrid ra một file văn bản. Mỗi bản ghi trên một dòng
Private Sub cmdLuu_Click()
Dim F As Long, i As Integer, S As String
F = FreeFile '/// xin một thẻ file còn trống
Open "c:\FlexGrid.txt" For Output As #F '/// mở để ghi (output = ghi)
For i = 1 To SL_BanGhi
With flxDanhSach
S= .TextMatrix(i, 0) & vbTab & .TextMatrix(i, 1) & vbTab & .TextMatrix(i, 2)
S= S & .TextMatrix(i, 3) & vbTab & .TextMatrix(i, 4) & .TextMatrix(i, 5)
Print #F, S '/// hàm Print để ghi giá trị S vào file F
End With
Next
Close #F '/// Đóng file với thẻ file F
MsgBox "Đã lưu dữ liệu ra tệp C:\FlexGrid.txt !", vbInformation
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
'/// Thêm một bản ghi mới vào FlexGrid
Private Sub cmdThem_Click()
SL_BanGhi = SL_BanGhi + 1 '/// tăng số lượng bản ghi mỗi khi thêm
'//// Xin thêm dòng mới nếu FlexGrid bị đầy
If flxDanhSach.Rows = SL_BanGhi Then flxDanhSach.Rows = SL_BanGhi + 1
With flxDanhSach
.TextMatrix(SL_BanGhi, 0) = SL_BanGhi
.TextMatrix(SL_BanGhi, 1) = txtHoVaTen.Text
.TextMatrix(SL_BanGhi, 2) = txtPascal.Text
.TextMatrix(SL_BanGhi, 3) = txtC.Text
.TextMatrix(SL_BanGhi, 4) = txtVB.Text
.TextMatrix(SL_BanGhi,5)=(Val(txtPascal.Text)+Val(txtC.Text)+Val(txtVB.Text)) / 3
.TextMatrix(SL_BanGhi, 5) = Round(.TextMatrix(SL_BanGhi, 5), 1)
End With
txtHoVaTen.Text = ""
txtPascal.Text = ""
txtC.Text = ""
txtVB.Text = ""
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'/// Xoá bản ghi (dòng) hiện hành bằng phương thức RemoveItem. Cần bắt lỗi ở đây.
Private Sub cmdXoa_Click()
On Error Resume Next
flxDanhSach.RemoveItem flxDanhSach.Row '/// Xoá dòng hiện tại (Row)
SL_BanGhi = SL_BanGhi - 1
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 106
If err Then MsgBox err.Description '/// Hiển thị thông báo khi có lỗi xảy ra
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'/// Hiển thị giá trị của dòng hiện tại trong FlexGrid mỗi khi người dùng Click lên dòng đó
Private Sub flxDanhSach_Click()
Dim DongHienTai As Integer
DongHienTai = flxDanhSach.Row
txtHoVaTen.Text = flxDanhSach.TextMatrix(DongHienTai, 1)
txtPascal.Text = flxDanhSach.TextMatrix(DongHienTai, 2)
txtC.Text = flxDanhSach.TextMatrix(DongHienTai, 3)
txtVB.Text = flxDanhSach.TextMatrix(DongHienTai, 4)
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'/// Đặt một số thuộc tính khởi đầu cho FlexGrid. (Bạn cũng có thể đặt nó trong lúc thiết kế)
Private Sub Form_Load()
With flxDanhSach
.Font.Name = ".vnArial"
.Font.Size = 12
.Rows = 2 '/// Số lượng hàng
.Cols = 6 '/// Số lượng cột
.FixedCols = 0 '/// Số cột cố định (có Màu xám)
.AllowUserResizing = flexResizeBoth '/// Cho phép kéo giãn hàng / cột
.TextMatrix(0, 0) = "Số TT" '/// Đặt tiêu đề cho các cột
.TextMatrix(0, 1) = "Họ và tên"
.TextMatrix(0, 2) = "Pascal"
.TextMatrix(0, 3) = "C++"
.TextMatrix(0, 4) = "VB"
.TextMatrix(0, 5) = "Trung bình chung"
End With
SL_BanGhi = 0
End Sub
c. Ghi chú:
• FlextGrid cũng quan niệm ma trận hàng và cột cũng có thể coi như một mảng,
khi đó có thể truy cập từng phần tử của mảng thông qua chỉ số,
Ví dụ : .Array(i) sẽ trả về phần tử thứ i.
• Cũng có thể chèn một ảnh vào các ô của Flex. Ví dụ để đặt ảnh trong điều
khiển Picture1 vào ô hiện hành thì viết:
flxDanhSach.PictureType = flexPictureColor
Set flxDanhSach.CellPicture = Picture1.Picture
Bài 4
a. Hướng dẫn:
• Muốn mở một trang Web thì sử dụng phương thức Navigate hoặc Navigate2
của điều khiển Web Browser.
• Ngoài ra, nếu có nhu cầu truy cập trực tiếp tới từng phần tử trong trang web
đang được mở thì cần phải khai báo một đối tượng HTMLDocument (đối
tượng này nằm trong thư viện HTML Object Library). Trong đó dùng phương
thức getElementById để tham chiếu đến đối tượng trên trang web thông qua
tên của đối tượng ấy. và dùng phương thức getAttribute để lấy giá trị một thuộc
tính nào đó của đối tượng tham chiếu bởi getAttribute.
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005
Trang 107
• Để biết rõ hơn về các đối tượng trên trang Web, cần nắm rõ mô hình DOM.
b. Chương trình mẫu
Form1.frm
Option Explicit
Dim Doc As HTMLDocument '/// Biến trỏ đến đối tượng tài liệu (Document) đang mở
'///---------------------------------------------------------------------------------------------------------------------------------
Private Sub Form_Load()
webMain.Navigate "about:blank" '/// Mở một trang web trắng - Blank
cmdGhiGiaTri.Enabled = False '/// tạm thời cấm nút này
cmdDocGiaTri.Enabled = False
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'///Phương thức getElementById ("HopBox") sẽ tham chiếu đến đối tượng có tên là "HopBox"
'/// Phương thức getAttribute("value") sẽ đọc giá trị của thuộc tính "value" của đối tượng đó
Private Sub cmdDocGiaTri_Click()
MsgBox Doc.getElementById("HopBox").getAttribute("value")
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'/// Phương thức setAttribute("value", S) sẽ gán giá trị S vào thuộc tính có tên là "value"
Private Sub cmdGhiGiatri_Click()
Dim S As String
S = InputBox("Nhập một xâu chữ để lưu textbox")
Call Doc.getElementById("HopBox").setAttribute("value", S)
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'/// Phương thức Navigate của điều khiển Webbrowser dùng để mở một trang Web
Private Sub cmdMo_Click()
webMain.Navigate txtURL.Text
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'/// Toàn bộ nội dung của trang Web được lưu trong thuộc tính innerHTML.
'/// Do vậy để thêm nội dung vào trang Web thì ta chỉ việc ghép thêm vào thuộc tính này
Private Sub cmdTaoNut_Click()
Doc.body.innerHTML=Doc.body.innerHTML &""
Doc.body.innerHTML=Doc.body.innerHTML &""
cmdGhiGiaTri.Enabled = True '/// Đã thêm nút rồi nên cho phép đọc và ghi giá trị vào.
cmdDocGiaTri.Enabled = True
cmdTaoNut.Enabled = False
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'
Các file đính kèm theo tài liệu này:
- pages_from_bai_tap_lap_trinh_vb_dhspkthy_4.pdf