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

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.

pdf32 trang | Chia sẻ: oanh_nt | Lượt xem: 1357 | Lượt tải: 0download
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:

  • pdfpages_from_bai_tap_lap_trinh_vb_dhspkthy_4.pdf
Tài liệu liên quan