Bài tập Visual Basic 6.0 từ cơ bản tới nâng cao

doc 78 trang phuongnguyen 10230
Bạn đang xem 20 trang mẫu của tài liệu "Bài tập Visual Basic 6.0 từ cơ bản tới nâng cao", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • docbai_tap_visual_basic_6_0_tu_co_ban_toi_nang_cao.doc

Nội dung text: Bài tập Visual Basic 6.0 từ cơ bản tới nâng cao

  1. 15 BÀI TẬP VISUAL BASIC PHẦN CĂN BẢN & NÂÂNG CAO Bài Tập Visual Basic 6.0 Từ Cơ Bản Tới Nâng Cao Bài tập này mình cĩ từ lâu rồi hơm nay mới đưa lên cho các bạn tham khảo được . Bao gồm 15 bài tập Visual Basic 6.0 từ cơ bản tới nâng cao rất hay cho nhưng bạn đang hoc vb6 . Nội Dung : Phần cơ bản : Bài 1 : Tạo form help Bài 2 : Tạo form thực hiện phép tính cơ bản Bài 3 :Tạo form thực hiện tính bình phương lập phương, Bài 4 : Tạo form tính phi du lịch Bài 5 : Tạo form tính phương trình bậc 2 Bài 6 : Tạo form quản lý hồ sơ nhân viên Bài 7 : Tạo fỏm chuyển đổi giữa các hệ số thập phân nhị phân Bài 8 : Tạo form định dạng văn bản Bài 9 : Tạo form đồ hoạ Bài 10 : Tạo form giải trí chạy trốn tình yêu Bài 11 : Tạo form menu đồ hoạ Phần nâng cao : Bài 12 : Viết chương trình soạn thảo đơn giản Bài 13 : viết chương trình xử lý tập tin Bài 14 : viết chương trình quản lý hồ sơ nhân viên dữ liệu access Bài 15 : Xây dựng quản lý danh bạ điện thoại dựa trên CSDL Access 0
  2. Bài tập Visual Basic Phần căn bản Bài 01 Tạo form Hello Yêu cầu 1. Khi nhấn nút Hello sẽ hiển thị câu chào và thông báo ngày giờ hiện tại như hình trên 2. Khi nhấn nút Xóa sẽ xóa trắng ô văn bản 3. Khi nhấn nút Đóng sẽ thoát chương trình Phân tích 1. Dùng đối tượng textbox để hiển thị văn bản trên form 2. Dùng đối tượng command button để tạo các nút nhấn 3. Duâng sự kiện Click của các nút nhấn để đáp ứng cú nhấp chuột của người dùng 4. Dùng hàm Now() để lấy ngày giờ hiện tại 5. Dùng hàm Format(Biểu thức, “Định dạng”) để định dạng kiểu hiển thị ngày giờ Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: PMT -= Trang 1 =-
  3. Bài tập Visual Basic Phần căn bản Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmHello Form Caption Chương trình Hello ! Name txtHienThi Text Bỏ trắng FontName VNI-Times TextBox Text1 FontSize 11 Alignment 2-Center MultiLine True Name cmdHienThi Command1 Caption Hello ! Command Name cmdXoa Command2 Button Caption Xoá Name cmdDong Command3 Caption Đóng 2) Viết mã lệnh xử lý: Mã lệnh cho nút Hello Private Sub cmdChao_Click() Me.txtHienthi = "Xin chào mọi người !" & vbCrLf _ & "Hôm nay ngày " & Format(Now(), "dd/mm/yyyy") & vbCrLf _ & "Bây giờ là " & Format(Now(), "hh:mm") End Sub Mã lệnh cho nút Đóng Private Sub cmdDong_Click() End End Sub Mã lệnh cho nút Xóa Private Sub cmdXoa_Click() Me.txtHienthi = "" End Sub 3) Giải thích Để gán giá trị cho thuộc tính của một đối tượng, ta ghi theo cú pháp Tênđốitượng.Tênthuộctính = giátrị Từ khóa Me đại diện cho form hiện tại đang viết lệnh, để truy xuất đến các điều khiển trên form ta dùng cú pháp chung như sau : Tênform.Tênđiểukhiển Hằng số vbCrLf (Carry Out Line Feed) được dùng để in xuống dòng Tóan tử & được dùng để nối 2 chuỗi văn bản, chuỗi văn bản khi thể hiện trong câu lệnh phải được bao bằng cặp nháy kép. Nếu bên trong cặp nháy kép không có kí tự nào kể cả khoảng trắng thì ta coi đó là chuỗi rỗng, chuỗi rỗng được dùng để xóa trắng ô văn bản Ví dụ : Me.txtHienThi=”” PMT -= Trang 2 =-
  4. Bài tập Visual Basic Phần căn bản Lệnh End được dùng để kết thúc chương trình Trong trường hợp câu lệnh quá dài khó theo dõi, ta muốn ngắt thành nhiều dòng thì ở cuối mỗi dòng phải gõ một khoảng trắng và dấu gạch dưới _ đi kèm Bài 02 Tạo form thực hiện các phép tính cơ bản Yêu cầu 1. Khi nhấn các nút sẽ thực hiện các phép toán tương ứng và hiện câu thông báo đã thực hiện phép tính nào 2. Khi nhập giá trị không phải là số vào ô textbox Số 1 hay Số 2 sẽ hiển thị thông báo lỗi 3. Khi đang nhập dữ liệu cho 2 ô Số thì ô kết quả và ô thông bào phải được xoá trắng Phân tích 1. Dùng 3 đối tượng textbox để nhập và hiển thị các giá trị số trên form 2. Dùng 6 đối tượng command button để tạo các nút nhấn 3. Duâng sự kiện Change của các ô textbox để kiểm tra dữ liệu nhập 4. Dùng hàm Val(BiểuThức) để chuyển đổi giá trị chuỗi thành con số 5. Dùng hàm IsNumeric(BiểuThức) để kiểm tra biểu thức có phải là số hay không PMT -= Trang 3 =-
  5. Bài tập Visual Basic Phần căn bản Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmPhepToanCoBan Caption Cac phep toan co ban Form FontName VNI-Times FontSize 11 Name txtSo1 Text1 Text Bỏ trắng Name txtSo2 TextBox Text2 Text Bỏ trắng Name txtKQ Text3 Text Bỏ trắng Name cmdCong Command1 Caption + Name cmdTru Command2 Caption - Name cmdNhan Command3 Command Caption * Button Name cmdChiaThuc Command4 Caption / Name cmdChiaNguyen Command5 Caption \ Name cmdPhanDu Command6 Caption Mod &H00FFFFC0& Làm nền cho Label1 BackColor (hằng số màu Cyan) các nút lệnh Name lblSo1 Label2 Caption Số 1 Name lblSo2 Label Label3 Caption Số 2 Name lblKQ Label4 Caption Kết quả Name lblThongbao Label5 Caption Bỏ trắng 2) Viết mã lệnh xử lý: PMT -= Trang 4 =-
  6. Bài tập Visual Basic Phần căn bản Mã lệnh cho nút Chia số nguyên Private Sub cmdChiaNguyen_Click() If Val(Me.txtSo2) = 0 Then Me.lblThongBao = "Số thứ 2 phải khác 0 !" Me.txtSo2.SetFocus Else Me.txtKQ = Val(Me.txtSo1) \ Val(Me.txtSo2) Me.lblThongBao = "Bạn đã thực hiện phép chia số nguyên !" End If End Sub Mã lệnh cho nút Chia số thực Private Sub cmdChiaThuc_Click() If Val(Me.txtSo2) = 0 Then Me.lblThongBao = "Số thứ 2 phải khác 0 !" Me.txtSo2.SetFocus Else Me.txtKQ = Val(Me.txtSo1) / Val(Me.txtSo2) Me.lblThongBao = "Bạn đã thực hiện phép chia số thực !" End If End Sub Mã lệnh cho nút Cộng Private Sub cmdCong_Click() Me.txtKQ = Val(Me.txtSo1) + Val(Me.txtSo2) Me.lblThongBao = "Bạn đã thực hiện phép cộng !" End Sub Mã lệnh cho nút Nhân Private Sub cmdNhan_Click() Me.txtKQ = Val(Me.txtSo1) * Val(Me.txtSo2) Me.lblThongBao = "Bạn đã thực hiện phép nhân !" End Sub Mã lệnh cho nút Phần dư Private Sub cmdPhanDu_Click() If Val(Me.txtSo2) = 0 Then Me.lblThongBao = "Số thứ 2 phải khác 0 !" Me.txtSo2.SetFocus Else Me.txtKQ = Val(Me.txtSo1) Mod Val(Me.txtSo2) Me.lblThongBao = "Bạn đã thực hiện phép lấy phần dư !" End If End Sub Mã lệnh cho nút Trừ Private Sub cmdTru_Click() Me.txtKQ = Val(Me.txtSo1) - Val(Me.txtSo2) Me.lblThongBao = "Bạn đã thực hiện phép trừ !" End Sub PMT -= Trang 5 =-
  7. Bài tập Visual Basic Phần căn bản Mã lệnh cho sự kiện Change của ô textbox Số 1 Private Sub txtSo1_Change() Me.txtKQ = "" Me.lblThongBao = "" If Not IsNumeric(Me.txtSo1) Then Me.lblThongBao = "Bạn phải nhập một giá trị số !" End If End Sub Mã lệnh cho sự kiện Change của ô textbox Số 2 Private Sub txtSo2_Change() Me.txtKQ = "" Me.lblThongBao = "" If Not IsNumeric(Me.txtSo2) Then Me.lblThongBao = "Bạn phải nhập một giá trị số !" End If End Sub 3) Giải thích Để kiểm tra giá trị nhập vào trong ô có phải là số hay không ta dùng cấu trúc điều kiện IF THEN ELSE theo cú pháp IF Điềukiện THEN ‘Nhóm lệnh thực hiện nếu điều kiện là đúng ELSE ‘Nhóm lệnh thực hiện nếu điều kiện là sai END IF Toán tử Not được dùng để lấy giá trị logic phủ định của một biểu thức Dùng phương thức SetFocus của ô textbox để đặt con trỏ nhập liệu vào trong ô ( Ví dụ: câu lệnh Me.txtSo2.SetFocus đặt con trỏ nhập liệu vào ô textbox Số 2) Bài 03 Tạo form thực hiện tính bình phương, lập phương, giai thừa của 1 số PMT -= Trang 6 =-
  8. Bài tập Visual Basic Phần căn bản Yêu cầu 1. Khi nhấn các nút sẽ thực hiện các phép toán tương ứng và hiện câu thông báo đã thực hiện phép tính nào 2. Khi nhập giá trị không phải là số vào ô textbox Giá trị sẽ hiển thị thông báo lỗi 3. Khi đang nhập dữ liệu cho ô giá trị thì ô kết quả và ô thông bào phải được xoá trắng Phân tích 1. Dùng 2 đối tượng textbox để nhập và hiển thị các giá trị số trên form 2. Dùng 4 đối tượng command button để tạo các nút nhấn 3. Duâng sự kiện Change của các ô textbox để kiểm tra dữ liệu nhập 4. Dùng hàm Val(BiểuThức) để chuyển đổi giá trị chuỗi thành con số 5. Dùng hàm IsNumeric(BiểuThức) để kiểm tra biểu thức có phải là số hay không Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmPhepToan Caption Cac phep tinh Form FontName VNI-Times FontSize 11 Name txtGiaTri Text1 Text Bỏ trắng TextBox Name txtKQ Text2 Text Bỏ trắng Name cmdBinhPhuong Command1 Caption Bình Phương Name cmdLapPhuong Command2 Command Caption Lập Phương Button Name cmdGiaiThua Command3 Caption Giai Thừa Name cmdDong Command4 Caption Đóng Name lblGiaTri Label1 Caption Giá trị Name lblKQ Label Label2 Caption Kết quả Name lblThongBao Label3 Caption Bỏ trắng PMT -= Trang 7 =-
  9. Bài tập Visual Basic Phần căn bản 2) Viết mã lệnh xử lý: Mã lệnh cho nút tính bình phương Private Sub CmdBinhPhuong_Click() txtKQ.Text = Val(txtGiaTri.Text) ^ 2 LblThongBao.Caption = "Bạn chọn tính bình phương" End Sub Mã lệnh cho nút tính giai thừa Private Sub CmdGiaThua_Click() On Error GoTo loi txtKQ.Text = 1 For I = 1 To Val(Me.txtGiaTri) txtKQ.Text = Val(txtKQ.Text) * I Next I LblThongBao.Caption = "Bạn chọn tính giai thừa" Exit Sub loi: Call MsgBox("Giá trị lơn không tính giai thừa", vbCritical + _ vbOKOnly, "Thông báo lỗi") End Sub Mã lệnh cho nút tính lập phương Private Sub CmdLapPhuong_Click() txtKQ.Text = Val(txtGiaTri.Text) ^ 3 LblThongBao.Caption = "Bạn chọn tính lập phương" End Sub Mã lệnh cho nút đóng form Private Sub CmdDong_Click() End End Sub Mã lệnh cho sự kiện Change của textbox Giá trị Private Sub txtGiaTri_Change() If IsNumeric(txtGiaTri) = False Then Call MsgBox("Giá trị không hợp lệ ! Yêu cầu nhập lại", _ vbCritical + vbOKOnly, "Thông báo lỗi") End If Me.txtKQ=”” End Sub 3) Giải thích Để hiển thị câu thông báo cho người dùng ta sử dụng hàm MsgBox theo cú pháp sau: MsgBox(“Câu thông báo”, các nút nhân, “Tiêu đề”) Để bẫy lỗi trong các đoạn chương trình con, ta dùng theo cú pháp On Error Goto Nhãn Exit Sub PMT -= Trang 8 =-
  10. Bài tập Visual Basic Phần căn bản Nhãn: ’Các câu lệnh cần thực hiện khi xảy ra lỗi PMT -= Trang 9 =-
  11. Bài tập Visual Basic Phần căn bản Bài 04 Tạo form tính chi phí Du lịch Yêu cầu 1. Khi nhấn nút Tính chi phí sẽ thực hiện tính toán và hiện câu thông báo về chi phí tính được 2. Khi nhập giá trị không phải là số dương vào các ô textbox hệ số sẽ hiển thị thông báo lỗi 3. Khi chọn checkbox nào thì ô textbox tương ứng đậm lên 4. Khi chọn option nào thì gán các giá trị mặc định cho các textbox Đi lại Aên uống Ở khách sạn Tham quan Nha Trang 500000 600000 800000 400000 Vũng Tàu 900000 700000 700000 200000 Huế 700000 500000 1000000 300000 Phân tích PMT -= Trang 10 =-
  12. Bài tập Visual Basic Phần căn bản 1. Dùng 4 đối tượng textbox để nhập và hiển thị các giá trị số 2. Dùng 2 đối tượng frame để tạo 2 khung Tuyến du lịch và Đăng ký 3. Dùng 3 đối tượng option button để chọn tuyến du lịch 4. Dùng 4 đối tương checkbox để chọn đăng ký dịch vụ 5. Dùng 1 đối tượng command button để tạo nút nhấn 6. Duâng thuộc tính Enabled để làm mờ hay đậm các ô textbox Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmDuLich Caption Du Lich Form FontName VNI-Times FontSize 11 Name txtDL Text1 Text Bỏ trắng Name txtAn Text2 Text Bỏ trắng TextBox Name txtKS Text3 Text Bỏ trắng Name txtTQ Text4 Text Bỏ trắng Command Name cmdChiPhi Command1 Button Caption Tính chi phí Name fraTuyen Frame1 Caption Tuyến du lịch Frame Name fraDangky Frame2 Caption Đăng ký Name optNT Option1 Caption Nha Trang Option Name optVT Option2 Button Caption Vũng Tàu Name optH Option3 Caption Huế Name chkDL Check1 Caption Đi lại Name chkAn CheckBox Check2 Caption Aên uống Name chkKS Check3 Caption Ở khách sạn PMT -= Trang 11 =-
  13. Bài tập Visual Basic Phần căn bản Name chkTQ Check4 Caption Tham quan 2) Viết mã lệnh xử lý: Mã lệnh cho checkbox Aên uống Private Sub chkAn_Click() txtAn.Enabled = chkAn.Value End Sub Mã lệnh cho checkbox Đi lại Private Sub chkDL_Click() txtDL.Enabled = chkDL.Value End Sub Mã lệnh cho checkbox Ở khách sạn Private Sub chkKS_Click() txtKS.Enabled = chkKS.Value End Sub Mã lệnh cho checkbox Tham quan Private Sub chkTQ_Click() txtTQ.Enabled = chkTQ.Value End Sub Mã lệnh cho nút Tính chi phí Private Sub cmdChiPhi_Click() Dim s1 As String, s2 As String, cp As Long If optNT Then s1 = "Bạn chọn tuyến du lịch Nha Trang" If optVT Then s1 = "Bạn chọn tuyến du lịch Vũng Tàu" If optH Then s1 = "Bạn chọn tuyến du lịch Huế" s1 = s1 & vbCrLf & vbCrLf s2 = "Chi phí chuyến đi như sau" & vbCrLf cp = 0 If chkDL Then s2 = s2 & "+ Đi lại: " & txtDL & vbCrLf cp = cp + Val(txtDL) End If If chkAn Then s2 = s2 & "+ Ăn uống: " & txtAn & vbCrLf cp = cp + Val(txtAn) End If If chkKS Then s2 = s2 & "+ Ở khách sạn: " & txtKS & vbCrLf cp = cp + Val(txtKS) End If If chkTQ Then s2 = s2 & "+ Tham quan: " & txtTQ & vbCrLf cp = cp + Val(txtTQ) End If PMT -= Trang 12 =-
  14. Bài tập Visual Basic Phần căn bản s2 = s2 & " " & vbCrLf s2 = s2 & "Tổng chi phí là: " & cp & vbCrLf & vbCrLf s2 = s2 & "Chúc bạn một chuyến du lịch vui vẻ !" MsgBox s1 & s2, , "Chi phi chuyen di" End Sub Mã lệnh cho sự kiện Load của form Private Sub Form_Load() chkDL = 1 optNT = True txtAn.Enabled = False txtKS.Enabled = False txtTQ.Enabled = False End Sub Mã lệnh cho option Huế Private Sub optH_Click() txtAn = "500000" txtKS = "1000000" txtDL = "700000" txtTQ = "300000" End Sub Mã lệnh cho option Nha trang Private Sub optNT_Click() txtAn = "600000" txtKS = "800000" txtDL = "500000" txtTQ = "400000" End Sub Mã lệnh cho option Vũng Tàu Private Sub optVT_Click() txtAn = "700000" txtKS = "700000" txtDL = "900000" txtTQ = "200000" End Sub 3) Giải thích Dùng sự kiện Click của các nút chọn để xử lý thao tác chọn của người dùng. Khi người dùng chọn vào checkbox nào thì mở textbox tương ứng lên bằng cách dùng thuộc tính Enabled Khai báo 2 biến chuỗi S1, S2 để ghi nhận câu thông báo. Sử dụng 1 biến cp kiểu Long để tính chi phí. Khi ngưới dùng chọn mục đăng ký nào thì tính tiền cho mục đó PMT -= Trang 13 =-
  15. Bài tập Visual Basic Phần căn bản Bài 05 Tạo form thực hiện giải phương trình bậc hai Yêu cầu 1. Khi nhấn nút Tính sẽ thực hiện giải phương trình và hiện câu thông báo nghiệm tìm được 2. Khi nhập giá trị không phải là số vào các ô textbox hệ số sẽ hiển thị thông báo lỗi 3. Khi đang nhập dữ liệu cho các ô hệ số thì ô kết quả và ô thông bào phải được xoá trắng 4. Nếu phương trình vô nghiệm thì sẽ hiện câu thông báo và ẩn đi các ô textbox X1, X2 Phân tích 1. Dùng 5 đối tượng textbox để nhập và hiển thị các giá trị hệ số cũng như các nghiệm của phương trình 2. Dùng 2 đối tượng command button để tạo các nút nhấn 3. Duâng sự kiện Change của các ô textbox để kiểm tra dữ liệu nhập 4. Dùng sự kiện LostFocus của các ô textbox hệ số để hiệu chỉnh dữ liệu nhập 5. Dùng hàm Val(BiểuThức) để chuyển đổi giá trị chuỗi thành con số 6. Dùng hàm IsNumeric(BiểuThức) để kiểm tra biểu thức có phải là số hay không 7. Giải phương trình bậc 2 theo thuật toán sau i. Bước 1: Nếu hệ số A=0 thì hiện câu thông báo “Đây là phương trình bậc 1” và thực hiện giải PT bậc 1 ii. Bước 2: Tính Delta=B2-4AC iii. Bước 3: Nếu Delta 0 “Phương trình có 2 nghiệm” iv. Bước 4: Hiển thị kết quả trong các ô textbox tương ứng PMT -= Trang 14 =-
  16. Bài tập Visual Basic Phần căn bản Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmGPTB2 Caption Giai PT bac 2 Form FontName VNI-Times FontSize 11 Name txtA Text1 Text Bỏ trắng Name txtB Text2 Text Bỏ trắng Name txtC TextBox Text3 Text Bỏ trắng Name txtX1 Text4 Text Bỏ trắng Name txtX2 Text5 Text Bỏ trắng Name cmdTinh Command1 Command Caption Tính Button Name cmdDong Command2 Caption Đóng Name lblTieuDe Label1 Caption Giải Phương Trình Bậc 2 Name lblA Label2 Caption X2 + Name lblB Label3 Caption X + Name lblC Label Label4 Caption = 0 Name lblX1 Label5 Caption X1 = Name lblX2 Label6 Caption X2 = Name lblThongBao Label7 Caption Bỏ trắng PMT -= Trang 15 =-
  17. Bài tập Visual Basic Phần căn bản 2) Viết mã lệnh xử lý: Mã lệnh cho nút Đóng Private Sub CMDDONG_Click() Dim TL As Byte TL = MsgBox("BAN MUON THOAT CHUONG TRINH ?", _ vbQuestion + vbYesNo, "THONG BAO ") If TL = vbYes Then End End Sub Mã lệnh cho nút Tính Private Sub CMDTINH_Click() Dim A, B, C, X1, X2, X, DELTA As Double A = Val(TXTA.Text) B = Val(TXTB.Text) C = Val(TXTC.Text) LBLX1.Visible = False LBLX2.Visible = False TXTX1.Visible = False TXTX2.Visible = False If A = 0 Then MsgBox "PHƯƠNG TRÌNH BẬC NHẤT" If B = 0 Then If C = 0 Then LBLThongBao.Caption = "PHƯƠNG TRÌNH CO VÔ SỐ NGHIỆM" Else LBLThongBao.Caption = "PHƯƠNG TRÌNH VÔ NGHIỆM" End If Else X = -C / B LBLThongBao.Caption = "PHUONG TRINH CO NGHIEM DUY NHAT" & _ Chr(10) & " X = " & Str(X) End If Else DELTA = B * B - 4 * A * C Select Case DELTA Case Is < 0 LBLThongBao.Caption = "PHƯƠNG TRÌNH CÓ VÔ SỐ NGHIỆM" Case Is = 0 X = -B / 2 / A LBLThongBao.Caption = "PHUONG TRINH CO NGHIEM DUY NHAT" & _ Chr(10) & " X = " & Str(X) Case Else X1 = (-B + Sqr(DELTA)) / 2 / A X2 = (-B - Sqr(DELTA)) / 2 / A LBLThongBao.Caption = "PHƯƠNG TRÌNH CÓ 2 NGHIỆM" LBLX1.Visible = True TXTX1.Visible = True TXTX1.Text = X1 LBLX2.Visible = True TXTX2.Visible = True TXTX2.Text = X2 End Select PMT -= Trang 16 =-
  18. Bài tập Visual Basic Phần căn bản End If End Sub PMT -= Trang 17 =-
  19. Bài tập Visual Basic Phần căn bản Mã lệnh cho sự kiện khi form được chạy Private Sub Form_Load() LBLTB.Caption = "BẠN HÃY NHẬP CÁC HỆ SỐ VÀO Ô TƯƠNG ƯNG” End Sub Mã lệnh cho sự kiện Change của ô textbox hệ số A Private Sub TXTA_Change() If IsNumeric(TXTA.Text) = False Then Call MsgBox("HE SO A KHONG HOP LE !" & Chr(10) & _ "BAN HAY NHAP LAI", vbCritical + vbOKOnly, "THONG BAO LOI") End If End Sub Mã lệnh cho sự kiện Change của ô textbox hệ số B Private Sub TXTB_Change() If IsNumeric(TXTB.Text) = False Then Call MsgBox("HE SO B KHONG HOP LE !" & Chr(10) & _ "BAN HAY NHAP LAI", vbCritical + vbOKOnly, "THONG BAO LOI") End If End Sub Mã lệnh cho sự kiện Change của ô textbox hệ số C Private Sub TXTC_Change() If IsNumeric(TXTC.Text) = False Then Call MsgBox("HE SO C KHONG HOP LE !" & Chr(10) & _ "BAN HAY NHAP LAI", vbCritical + vbOKOnly, "THONG BAO LOI") End If End Sub Mã lệnh cho sự kiện LostFocus của ô textbox hệ số A Private Sub TXTA_LostFocus() If Trim(TXTA) = "-" Then TXTA = "-1" ElseIf Trim(TXTA) = "+" Then TXTA = "1" End If End Sub Mã lệnh cho sự kiện LostFocus của ô textbox hệ số B Private Sub TXTB_LostFocus() If Trim(TXTB) = "-" Then TXTB = "-1" ElseIf Trim(TXTB) = "+" Then TXTB = "1" End If End Sub Mã lệnh cho sự kiện LostFocus của ô textbox hệ số C Private Sub TXTC_LostFocus() PMT -= Trang 18 =-
  20. Bài tập Visual Basic Phần căn bản If Trim(TXTC) = "-" Then TXTC = "-1" ElseIf Trim(TXTC) = "+" Then TXTC = "1" End If End Sub 3) Giải thích Dùng hàm Chr(mã ASCII) để in ra một ký tự ví dụ : Chr(10) in ký tự xuống dòng Dùng hàm Str(số) để đổi số thành chuỗi Dùng hàm Sqr(Số) để lấy căn bậc 2 của số Bài 06 Tạo form Quản lý hồ sơ nhân viên Yêu cầu 1. Mỗi nhân viên sẽ có một mã số, họ tên, chức vụ và giới tính 2. Khi nhấn nút Nhập sẽ lưu thông tin về nhân viên, đồng thời hiển thị tên nhân viên trong ô danh sách tên đã nhập 3. Khi nhấn nút >> sẽ chuyển tên nhân viên sang ô danh sách chuyển công tác và xoá tên trong ô danh sách tên đã nhập. Khi nhấn nút << thì thao tác ngược lại 4. Trong ô combobox chức vụ đã có sẵn người dùng chỉ việc chọn từ danh sách các chức vụ được liệt kê 5. Khi chọn một tên nhân viên trong ô danh sách sẽ hiển thị lại các thông tin về nhân viên đó trong các ô tương ứng PMT -= Trang 19 =-
  21. Bài tập Visual Basic Phần căn bản Phân tích 1. Dùng 2 đối tượng textbox để nhập và hiển thị mã số, họ tên của nhân viên 2. Dùng 1 đối tượng combobox để tạo danh sách các chức vụ 3. Dùng 2 đối tượng option button để chọn giới tính 4. Duâng 2 đối tượng listbox để hiển thị danh sách tên nhập vào và danh sách chuyển công tác 5. Dùng 4 đối tượng command button để tạo 4 nút nhấn 6. Để lưu trữ thông tin về một nhân viên cần tạo một cấu trúc dữ liệu mới đặt tên là Thongtin với các thành phần và cách thức khai báo như sau Private Type Thongtin ma As Integer cv As String phai As Boolean hoten As String End Type 7. Để lưu trữ danh sách các nhân viên được nhập vào, ta dùng một mảng 20 phần tử có tên HOSO trong đó mỗi phần tử của mảng là một cấu trúc kiểu Thongtin đã khai báo ở trên 8. Dim Hoso(20) As Thongtin Ngoài ra cũng cần dùng thêm một biến số nguyên kiểu Byte để đếm sô nhân viên đã được nhập Public songuoi As Byte Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmHoso Caption Quan ly ho so nhan vien Form FontName VNI-Times FontSize 11 Name txtMa Text1 Text Bỏ trắng TextBox Name txtHoten Text2 Text Bỏ trắng Name cboChucvu Nhân viên Giám đốc ComboBox Combo1 List Trưởng phòng Kế toán Bán hàng Name optPhai(0) Option Option1 Caption Nữ PMT -= Trang 20 =-
  22. Bài tập Visual Basic Phần căn bản Button Name optPhai(1) Option2 Caption Nam Name cmdNhap Command1 Caption Nhập Name cmdDong Command2 Command Caption Đóng Button Name cmdIn Command3 Caption > Name lblMa Label1 Caption Mã số Label Name lblHoten Label2 Caption Họ tên Name fraGT Frame Frame1 Caption Giới tính List1 Name lstTen List Box List2 Name lstCongtac 2) Viết mã lệnh xử lý: Mã lệnh khai báo kiểu dữ liệu thông tin về 1 nhân viên Private Type Thongtin ma As Integer ‘Mã số cv As String ‘Chức vụ phai As Boolean ‘Giới tính hoten As String ‘Họ tên End Type Mã lệnh khai báo biến Dim Hoso(20) As Thongtin Public songuoi As Byte Mã lệnh cho nút Đóng Private Sub cmdDong_Click() End End Sub Mã lệnh cho nút -1 Then lstTen.AddItem lstCongtac.Text lstCongtac.RemoveItem lstCongtac.ListIndex End If End Sub Mã lệnh cho nút Nhập PMT -= Trang 21 =-
  23. Bài tập Visual Basic Phần căn bản Private Sub cmdNhap_Click() If Len(txtHoten) > 0 And txtMa > Private Sub cmdOut_Click() If lstTen.ListIndex -1 Then For i = 0 To lstTen.ListCount If lstTen.Text = Hoso(i).hoten Then txtMa = Hoso(i).ma txtHoten = Hoso(i).hoten cboChucvu.Text = Hoso(i).cv If Hoso(i).phai = True Then optPhai(1).Value = True Else optPhai(0).Value = True End If End If PMT -= Trang 22 =-
  24. Bài tập Visual Basic Phần căn bản Next End If End Sub 3) Giải thích Dùng sụ kiện Form_Load để thêm các chức vụ trước khi form hiển thị Hai option có cùng tên optPhai(0), optPhai(1) được gọi là mảng các điều khiển (Control Array) tương tự như một biến mảng dữ liệu Dùng hàm Len(chuỗi) để lấy độ dài của chuỗi Bài 07 Tạo form Chuyển đổi giữa các hệ thống số Yêu cầu 1. Viết các hàm để chuyển đổi giữa các hệ thống số 2. Khi nhấn nút Chuyển đổi sẽ dựa trên giá trị mới nhập vào ô textbox của hệ thống số được chọn để chuyển sang các hệ thống số còn lại 3. Khi chọn vào ô textbox bất kỳ nào để nhập giá trị thì các ô textbox khác phải được xoá trắng 4. Khi dời con trỏ khỏi 1 ô textbox bất kỳ phải kiểm tra xem dữ liệu nhập có phù hợp với hệ thống số được chọn hay không Phân tích 1. Dùng 4 đối tượng textbox để nhập và hiển thị các giá trị của các hệ thống số. Khi nhập dữ liệu phải kiểm tra hợp lệ hay không Số thập phân gồm các ký tự :”0123456789” Số nhị phân gồm các ký tự : “01” Số bát phân gồm các ký tự : “01234567” Số thập lục phân gồm các ký tự : “0123456789ABCDEF” 2. Dùng 2 đối tượng command button để tạo 2 nút nhấn PMT -= Trang 23 =-
  25. Bài tập Visual Basic Phần căn bản 3. Để kiểm tra dữ liệu nhập vào các ô textbox có hợp lệ hay không ta dùng sự kiện LostFocus 4. Để thực hiện thao tác xoá trắng các ô textbox khi chọn vào 1 ô để nhập giá trị cần chuyển đổi ta dùng sự kiện GotFocus 5. Ngoài ra cũng cần dùng thêm một biến chuỗi để ghi nhận rằng người dùng đã nhập dữ liệu cần chuyển đổi vào ô textbox của hệ thống số nào Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmChuyendoi Caption Cac he thong so Form FontName VNI-Times FontSize 11 Name txtTP Text1 Text Bỏ trắng Name txtNP Text2 Text Bỏ trắng TextBox Name txtBP Text3 Text Bỏ trắng Name txtTLP Text4 Text Bỏ trắng Name cmdDoi Command1 Command Caption Chuyển đổi Button Name cmdDong Command2 Caption Đóng Name lblTP Label1 Caption Thập phân Name lblNP Label2 Caption Nhị phân Label Label3 Name lblBP Caption Bát phân Label4 Name lblTLP Caption Thập lục phân PMT -= Trang 24 =-
  26. Bài tập Visual Basic Phần căn bản 2) Viết mã lệnh xử lý: Mã lệnh khai báo biến Dim hethongso As String Mã lệnh cho nút Chuyển đổi Private Sub cmdDoi_Click() Select Case hethongso Case "TP": txtNP = Dec2Bin(txtTP) txtBP = Dec2Oct(txtTP) txtTLP = Dec2Hex(txtTP) Case "NP": txtTP = Bin2Dec(txtNP) txtBP = Dec2Oct(txtTP) txtTLP = Dec2Hex(txtTP) Case "BP" txtTP = Oct2Dec(txtBP) txtNP = Dec2Bin(txtTP) txtTLP = Dec2Hex(txtTP) Case "TLP" txtTP = Hex2Dec(txtTLP) txtNP = Dec2Bin(txtTP) txtBP = Dec2Oct(txtTP) End Select End Sub Mã lệnh cho nút Đóng Private Sub cmdDong_Click() If MsgBox("Ban muon ngung chuong trinh ?", _ vbQuestion + vbYesNo, "Thong bao") = vbYes Then End End Sub Mã lệnh cho sự kiện Change của ô Bát phân Private Sub txtBP_Change() cmdDoi.Enabled = True End Sub Mã lệnh cho sự kiện GotFocus của ô Bát phân Private Sub txtBP_GotFocus() txtTP = "" txtNP = "" txtTLP = "" End Sub Mã lệnh cho sự kiện LostFocus của ô Bát phân Private Sub txtBP_LostFocus() cmdDoi.Enabled = True Me.txtTP = "" Me.txtNP = "" PMT -= Trang 25 =-
  27. Bài tập Visual Basic Phần căn bản Me.txtTLP = "" For i = 1 To Len(txtBP) If InStr("01234567", Mid(txtBP, i, 1)) = 0 Then Call MsgBox("Du lieu khong hop le !", _ vbCritical + vbOKOnly, "Thong bao loi") txtBP.SelStart = i - 1 txtBP.SelLength = 1 cmdDoi.Enabled = False End If Next hethongso = "BP" End Sub Mã lệnh cho sự kiện Change của ô Nhị phân Private Sub txtNP_Change() cmdDoi.Enabled = True End Sub Mã lệnh cho sự kiện GotFocus của ô Nhị phân Private Sub txtNP_GotFocus() txtTP = "" txtBP = "" txtTLP = "" End Sub Mã lệnh cho sự kiện GotFocus của ô Nhị phân Private Sub txtNP_LostFocus() cmdDoi.Enabled = True Me.txtBP = "" Me.txtTP = "" Me.txtTLP = "" For i = 1 To Len(txtNP) If InStr("01", Mid(txtNP, i, 1)) = 0 Then Call MsgBox("Du lieu khong hop le !", vbCritical + vbOKOnly, "Thong bao loi") txtNP.SelStart = i - 1 txtNP.SelLength = 1 cmdDoi.Enabled = False End If Next hethongso = "NP" End Sub Mã lệnh cho sự kiện Change của ô Thập lục phân Private Sub txtTLP_Change() cmdDoi.Enabled = True End Sub Mã lệnh cho sự kiện GotFocus của ô Thập lục phân Private Sub txtTLP_GotFocus() txtTP = "" txtNP = "" PMT -= Trang 26 =-
  28. Bài tập Visual Basic Phần căn bản txtBP = "" End Sub Mã lệnh cho sự kiện LostFocus của ô Thập lục phân Private Sub txtTLP_LostFocus() cmdDoi.Enabled = True Me.txtBP = "" Me.txtNP = "" Me.txtTP = "" For i = 1 To Len(txtTLP) If InStr("0123456789abcdef", LCase(Mid(txtTLP, i, 1))) = 0 Then Call MsgBox("Du lieu khong hop le !", _ vbCritical + vbOKOnly, "Thong bao loi") txtTLP.SelStart = i - 1 txtTLP.SelLength = 1 cmdDoi.Enabled = False End If Next hethongso = "TLP" End Sub Mã lệnh cho hàm chuyển đổi các hệ thống số Function Chuyendoihethongso(so As Variant, nguon As String, _ dich As String) As Variant Dim tam, kq As Variant Select Case nguon Case "TP": tam = so Case "NP": tam = Bin2Dec(so) Case "BP": tam = Oct2Dec(so) Case "TLP": tam = Hex2Dec(so) End Select Select Case dich Case "TP": kq = tam Case "NP": kq = Dec2Bin(tam) Case "BP": kq = Dec2Oct(tam) Case "TLP": kq = Dec2Hex(tam) End Select Chuyendoihethongso = kq End Function Mã lệnh cho hàm chuyển đổi Thập phân -> Nhị phân Function Dec2Bin(so As Variant) As Variant Dim kq, n kq = "" PMT -= Trang 27 =-
  29. Bài tập Visual Basic Phần căn bản n = Val(so) While n > 0 kq = n Mod 2 & kq n = n \ 2 Wend Dec2Bin = kq End Function Mã lệnh cho hàm chuyển đổi Nhị phân ->Thập phân Function Bin2Dec(so As Variant) As Variant Dim kq, tam, i, n n = Len(so) tam = so kq = 0 For i = n - 1 To 0 Step -1 kq = kq + Val(Mid(tam, n - i, 1)) * 2 ^ i Next Bin2Dec = kq End Function Mã lệnh cho hàm chuyển đổi Thập phân ->Thập lục phân Function Dec2Hex(so As Variant) As Variant Dim kq, tam, n n = Val(so) While n > 0 Select Case n Mod 16 Case Is Thập phân Function Hex2Dec(so As Variant) As Variant Dim kq, tam, i, n n = Len(so) tam = so kq = 0 For i = n - 1 To 0 Step -1 kq = kq + InStr(1, "123456789ABCDEF", _ UCase(Mid(tam, n - i, 1))) * 16 ^ i Next Hex2Dec = kq End Function Mã lệnh cho hàm chuyển đổi Thập phân ->Bát phân Function Dec2Oct(so As Variant) As Variant PMT -= Trang 28 =-
  30. Bài tập Visual Basic Phần căn bản Dim kq, n kq = "" n = Val(so) While n > 0 kq = n Mod 8 & kq n = n \ 8 Wend Dec2Oct = kq End Function Mã lệnh cho hàm chuyển đổi Bát phân ->Thập phân Function Oct2Dec(so As Variant) As Variant Dim kq, tam, i, n n = Len(so) tam = so kq = 0 For i = n - 1 To 0 Step -1 kq = kq + Val(Mid(tam, n - i, 1)) * 8 ^ i Next Oct2Dec = kq End Function PMT -= Trang 29 =-
  31. Bài tập Visual Basic Phần căn bản Mã lệnh cho sự kiện Change của ô Thập phân Private Sub txtTP_Change() cmdDoi.Enabled = True End Sub Mã lệnh cho sự kiện GotFocus của ô Thập phân Private Sub txtTP_GotFocus() txtNP = "" txtBP = "" txtTLP = "" End Sub Mã lệnh cho sự kiện LostFocus của ô Thập phân Private Sub txtTP_LostFocus() cmdDoi.Enabled = True Me.txtBP = "" Me.txtNP = "" Me.txtTLP = "" If txtTP <> "" And Not IsNumeric(Me.txtTP) Then MsgBox "Giá trị không hợp lệ !", vbCritical, "Thong bao loi" txtTP.SelStart = 1 txtTP.SelLength = Len(txtTP) cmdDoi.Enabled = False End If hethongso = "TP" End Sub Bài 08 Tạo form Chỉnh sửa văn bản theo định dạng Yêu cầu 1. Văn bản nhập vào trong ô có thể thuộc bất kỳ định dạng nào như chữ hoa, chữ thường hay tuỳ ý 2. Khi nhấn nút Thực hiện sẽ hiệu chỉnh văn bản trong ô textbox theo kiểu định dạng được chọn 3. Khi nhấn nút Đóng sẽ thoát khỏi chương trình PMT -= Trang 30 =-
  32. Bài tập Visual Basic Phần căn bản Phân tích 1. Dùng 1 đối tượng textbox để nhập và hiển thị văn bản 2. Dùng 2 đối tượng command button để tạo 2 nút nhấn 3. Dùng 3 đối tượng option button để chọn định dạng Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmHieuchinhvb Caption Sua loi van ban Form FontName VNI-Times FontSize 11 Name txtVB TextBox Text1 Text Bỏ trắng Name cmdThuchien Command1 Command Caption Thực hiện Button Name cmdDong Command2 Caption Đóng Name fraDinhdang Frame Frame1 Caption Chọn định dạng Name optChutieude Option1 Caption Chữ Tiêu Đề Name optChuhoa Option Button Option2 Caption CHỮ HOA Name optChuthuong Option3 Caption chữ thường 2) Viết mã lệnh xử lý: Mã lệnh cho nút Đóng Private Sub cmdDong_Click() If MsgBox("Ban co nuon thoat chuong trinh ?", vbQuestion + _ vbYesNo, "Thong bao") = vbYes Then End End If End Sub Mã lệnh cho nút Thực hiện Private Sub cmdThuchien_Click() Dim tam As String tam = LCase(Trim(txtvb)) While InStr(1, tam, " ") <> 0 tam = Replace(tam, " ", " ") Wend If optChuhoa Then tam = UCase(tam) PMT -= Trang 31 =-
  33. Bài tập Visual Basic Phần căn bản End If If optChutieude Then tam = UCase(Left(tam, 1)) & Mid(tam, 2) For i = 2 To Len(tam) If Asc(Mid(tam, i - 1, 1)) = 32 And Asc(Mid(tam, i, 1)) <> 32 Then tam = Left(tam, i - 1) & UCase(Mid(tam, i, 1)) & Mid(tam, i + 1) End If Next End If txtvb = tam End Sub Bài 09 Tạo form Đồ hoạ Yêu cầu 1. Khi nhấn chọn mục nào trong khung Chọn hình sẽ hiển thị hình tương ứng ở bên dưới 2. Khi nhấn chọn mục nào trong khung Chọn màu sẽ hiển thị hình theo màu tương ứng ở bên dưới 3. Khi nhấn nút Đóng sẽ thoát khỏi chương trình Phân tích 1. Dùng 1 đối tượng Shape để hiển thị các kiểu hình 2. Dùng 1 đối tượng command button để tạo nút Đóng 3. Dùng 2 đối tượng Frame để chứa các nút option 4. Dùng 8 đối tượng option button để chọn hình và định dạng Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú PMT -= Trang 32 =-
  34. Bài tập Visual Basic Phần căn bản Name frmDohoa Caption Do hoa trong VB Form FontName VNI-Times FontSize 11 Shape Shape1 Name shpHinh Name cmdThuchien Command1 Caption Thực hiện Command Name cmdDong Command2 Caption Đóng Name fraHinh Frame1 Caption Chọn Kiểu hình Frame Name fraMau Frame2 Caption Chọn màu Name optHinh Option1 Index 0 Caption Hình chữ nhật Name optHinh Option2 Index 1 Caption Hình vuông Name optHinh Option3 Index 2 Caption Hình elip Name optHinh Option4 Index 3 Caption Hình tròn Option Button Name optMau Option5 Index 0 Caption Màu đen Name optMau Option6 Index 1 Caption Màu trắng Name optMau Option7 Index 2 Caption Màu đỏ Name optMau Option8 Index 3 Caption Màu vàng PMT -= Trang 33 =-
  35. Bài tập Visual Basic Phần căn bản 2) Viết mã lệnh xử lý: Mã lệnh cho sự kiện form được nạp lên bộ nhớ Private Sub Form_Load() OptHinh(0).Value = True optMau(0).Value = True End Sub Mã lệnh cho sự kiện click chọn màu Private Sub optMau_Click(Index As Integer) Select Case Index Case 0 shpHinh.FillColor = QBColor(0) 'Mau den Case 1 shpHinh.FillColor = QBColor(15) 'Mau trang Case 2 shpHinh.FillColor = QBColor(12) 'Mau do Case 3 shpHinh.FillColor = QBColor(14) 'Mau vang End Select End Sub Mã lệnh cho sự kiện click chọn hình Private Sub OptHinh_Click(Index As Integer) shpHinh.Shape = Index End Sub Mã lệnh cho sự kiện click của nút Đóng Private Sub cmdDong_Click() If MsgBox("Ban co nuon thoat chuong trinh ?", vbQuestion + _ vbYesNo, "Thong bao") = vbYes Then End End If End Sub PMT -= Trang 34 =-
  36. Bài tập Visual Basic Phần căn bản Bài 10 Tạo form giải trí “Chạy trốn tình yêu” Yêu cầu 1. Khi rê chuột vào nút “Oâi !Không bao giờ” thì nút này sẽ bị di chuyển đến một vị trí khác ngẫu nhiên trên form (ngăn không cho nhấn nút) 2. Người dùng chỉ có thể nhấn nút “Anh yêu em !”, người dùng cũng không thể đặt focus lên nút “Oâi ! Không bao giờ” bằng cách nhấn phím Tab 3. Khi nhấn nút “Anh yêu em !”sẽ hiển thị câu thông báo Phân tích 1. Dùng 1 đối tượng Label để hiển thị câu hỏi 2. Dùng 2 đối tượng command button để tạo 2 nút nhấn 3. Dùng phương thức Move của nút nhấn để làm cho nút di chuyển đến vị trí khác trên form dựa vào 2 thuộc tính ScaleWidth và ScaleHeight của form 4. Dùng phương thức Setfocus để gán focus cho nút nhấn PMT -= Trang 35 =-
  37. Bài tập Visual Basic Phần căn bản Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmDohoa Caption Do hoa trong VB Form FontName VNI-Times FontSize 11 Name lblHoi Label Label1 Caption Anh có yêu em không ??? Command1 Name cmdYes Caption Anh yêu em ! Command Command2 Name cmdNo Caption Oâiii ! Không bao giờ 2) Viết mã lệnh xử lý: Mã lệnh xử lý khi người dùng rê chuột lên nút “Oâi ! Không bao giờ” Private Sub cmdNo_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single) cmdNo.Move Rnd * (Me.ScaleWidth - cmdNo.Width), Rnd * _ (Me.ScaleHeight - cmdNo.Height) End Sub Mã lệnh cho nút “Anh yêu em” Private Sub cmdYes_Click() MsgBox "OI !!! CAU TRA LOI TUYET VOI !" & vbCrLf & _ "NHUNG EM CON YEU ANH GAP NHIEU LAN", vbExclamation, "I LOVE YOU" End Sub Mã lệnh xử lý sự kiện Gotfocus của nút “Oâi ! Không bao giờ” Private Sub cmdNo_GotFocus() cmdYes.SetFocus End Sub PMT -= Trang 36 =-
  38. Bài tập Visual Basic Phần căn bản Tạo form menu Đồ hoạ Bài 11 Yêu cầu 1. Tạo 2 menu Hinh ve và Chon mau to như sau 2. Khi nhấn chọn mục nào trong menu “Hinh ve” và “Chon mau to” sẽ đánh dấu check trên tên của mục đó 3. Sau khi chọn hình và màu nền cho hình, người dùng sẽ drag chuột trên form để vẽ hình Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmDohoa Caption Do hoa trong VB Form FontName VNI-Times FontSize 11 Name mnuHinh Cấp 1 menu Menu1 Caption &Hinh ve PMT -= Trang 37 =-
  39. Bài tập Visual Basic Phần căn bản Name mnuHcn Cấp 2 Caption Hình chữ nhật Name mnuVuong Cấp 2 Caption Hình vuông Name mnuElip Cấp 2 Caption Hình elip Name mnuTron Cấp 2 Caption Hình tròn Name mnuMauto Cấp 1 Menu Caption Chọn màu tô Name mnuDen Cấp 2 Caption Màu đen Name mnuTrang Cấp 2 Menu2 Caption Màu trắng Name mnuDo Cấp 2 Caption Màu đỏ Name mnuVang Cấp 2 Caption Màu Vàng 2) Viết mã lệnh xử lý: Mã lệnh khai báo biến toàn cục Dim dx As Long, dy As Long, ve As Boolean Mã lệnh cho sự kiện khi người dùng nhấn nút chuột xuống Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As _ Single, Y As Single) dx = X: dy = Y ve = True End Sub Mã lệnh xử lý khi người dùng drag chuột trên form để vẽ hình Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As _ Single, Y As Single) If ve = True Then Me.Refresh If mnuhcn.Checked = True Then ‘Vẽ hình chữ nhật If Shift = vbShiftMask Then If X > Y Then Line (dx, dy)-(dx + (Y - dy), Y), , BF Else Line (dx, dy)-(X, dy + (X - dx)), , BF End If Else Line (dx, dy)-(X, Y), , BF End If End If If mnuvuong.Checked = True Then ‘Vẽ hình vuông If X > Y Then Line (dx, dy)-(dx + (Y - dy), Y), , BF Else PMT -= Trang 38 =-
  40. Bài tập Visual Basic Phần căn bản Line (dx, dy)-(X, dy + (X - dx)), , BF End If End If If mnuelip.Checked = True Then ‘Vẽ hình elip If Shift = vbShiftMask Then If X > Y Then Circle (dx + (Y - dy) \ 2, dy + (Y - dy) \ 2), Abs(Y - dy) \ 2 Else Circle (dx + (X - dx) \ 2, dy + (X - dx) \ 2), Abs(X - dx) \ 2 End If Else If X > Y Then Circle (dx + (X - dx) \ 2, dy + (Y - dy) \ 2), Abs(X - dx) \ 2,,,_ , Abs(Y - dy) / Abs(X + 1 - dx) Else Circle (dx + (X - dx) \ 2, dy + (Y - dy) \ 2), Abs(Y - dy) \ 2,,,_ , Abs(Y - dy) / Abs(X + 1 - dx) End If End If End If If mnutron.Checked = True Then ‘Vẽ hình tròn If X > Y Then Circle (dx + (Y - dy) \ 2, dy + (Y - dy) \ 2), Abs(Y - dy) \ 2 Else Circle (dx + (X - dx) \ 2, dy + (X - dx) \ 2), Abs(X - dx) \ 2 End If End If End If End Sub Mã lệnh cho sự kiện khi người dùng thả nút chuột Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As _ Single, Y As Single) ve = False End Sub Mã lệnh cho menu Màu đen Private Sub mnuden_Click() Me.FillColor = vbBlack : Me.ForeColor = vbBlack mnuDen.Checked = True mnuTrang.Checked = False mnuDo.Checked = False mnuVang.Checked = False End Sub Mã lệnh cho menu Màu đỏ Private Sub mnuDo_Click() Me.FillColor = vbRed : Me.ForeColor = vbRed mnuDen.Checked = False mnuTrang.Checked = False mnuDo.Checked = True mnuVang.Checked = False End Sub Mã lệnh cho menu Hình elip PMT -= Trang 39 =-
  41. Bài tập Visual Basic Phần căn bản Private Sub mnuelip_Click() mnuelip.Checked = True mnuvuong.Checked = False mnuhcn.Checked = False mnutron.Checked = False End Sub Mã lệnh cho menu Hình chữ nhật Private Sub mnuhcn_Click() mnuhcn.Checked = True mnuvuong.Checked = False mnuelip.Checked = False mnutron.Checked = False End Sub Mã lệnh cho menu Màu trắng Private Sub mnuTrang_Click() Me.FillColor = vbWhite Me.ForeColor = vbWhite mnuDen.Checked = False mnuTrang.Checked = True mnuDo.Checked = False mnuVang.Checked = False End Sub Mã lệnh cho menu Hình tròn Private Sub mnutron_Click() mnutron.Checked = True mnuvuong.Checked = False mnuelip.Checked = False mnuhcn.Checked = False End Sub Mã lệnh cho menu Màu vàng Private Sub mnuVang_Click() Me.FillColor = vbYellow Me.ForeColor = vbYellow mnuDen.Checked = False mnuTrang.Checked = False mnuDo.Checked = False mnuVang.Checked = True End Sub Mã lệnh cho menu Hình elip Private Sub mnuvuong_Click() mnuvuong.Checked = True mnuhcn.Checked = False mnuelip.Checked = False mnutron.Checked = False End Sub PMT -= Trang 40 =-
  42. BÀI TẬP VISUAL BASIC PHẦN NÂNG CAO 0
  43. Bài tập Visual Basic Phần nâng cao Viết chương trình soạn thảo văn bản đơn giản Bài 12 Yêu cầu 1. Tạo 2 menu File và Edit như sau 2. Menu File chứa các lệnh thao tác trên tập tin văn bản như tạo mới, lưu, mở và chức năng thoát chương trình 3. Menu Edit chứa các lệnh thao tác văn bản như sao chép, cắt, dán kết hợp sử dụng vùng nhớ đệm ClipBoard Phân tích 1. Dùng 1 đối tượng Textbox để hiển thị văn bản 2. Dùng 1 đối tượng CommonDialog để hiển thị các hộp thoại lưu mở tập tin 3. Dùng đối tượng ClipBoard để thực hiện các thao tác sao chép, cắt , dán văn bản Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: PMT -= Trang 1 =-
  44. Bài tập Visual Basic Phần nâng cao Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmDohoa Caption Text Editor Form FontName VNI-Times FontSize 11 Name mnuFile Cấp 1 Caption &Flie Name mnuNew Cấp 2 Caption New Name mnuOpen Cấp 2 Caption Open Menu1 Name mnuSave Cấp 2 Caption Save Name separator Cấp 2 Caption - Menu Name mnuExit Cấp 2 Caption Exit Name mnuEdit Cấp 1 Caption &Edit Name mnuCut Cấp 2 Caption Cut Menu2 Name mnuCopy Cấp 2 Caption Copy Name mnuPaste Cấp 2 Caption Paste Name txtEdit Text Bỏ trắng Textbox Text1 Scrollbar 3_Both Multilines True Name Cdlg Common CommonDialog DefaultExt txt Dialog1 Filter Text Document|*.txt 2) Viết mã lệnh xử lý: Mã lệnh khai báo biến toàn cục Dim fname As String, fhandle As Integer, changed As Boolean Mã lệnh cho sự kiện nạp form lên bộ nhớ Private Sub Form_Load() Me.Caption = "Text Editor" txtedit.Visible = False mnuSave.Enabled = False End Sub Mã lệnh sự kiện thay đổi kích thước form PMT -= Trang 2 =-
  45. Bài tập Visual Basic Phần nâng cao Private Sub Form_resize() txtedit.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight End Sub Mã lệnh cho menu Copy Private Sub mnucopy_Click() If txtedit.SelText "" Then Clipboard.SetText txtedit.SelText txtedit.SelText = "" End If End Sub Mã lệnh cho menu Exit Private Sub mnuexit_Click() If txtedit.DataChanged Then If MsgBox("Ban chua luu du lieu !" & vbCrLf & "Ban co muon luu ko ?", vbQuestion + vbYesNo, "Thong bao") = vbYes Then Call mnuSave_Click Else End End If End If End Sub Mã lệnh cho menu New Private Sub mnunew_Click() Dim tb As Integer If changed = True Then tb = MsgBox("Do you want to save changes?", _ vbQuestion + vbYesNo, "File Changed") If tb = vbYes Then Call mnuSave_Click 'Save the file cdlg.DialogTitle = "Select a file" End If End If Me.Caption = "Noname.txt" txtedit.Text = "" mnuSave.Enabled = False changed = False txtedit.Visible = True End Sub PMT -= Trang 3 =-
  46. Bài tập Visual Basic Phần nâng cao Mã lệnh cho menu Open Private Sub mnuopen_Click() Dim tb As Integer On Error GoTo loi If changed = True Then tb = MsgBox("Do you want to save changes?", _ vbQuestion + vbYesNo, "File Changed") If tb = vbYes Then Call mnuSave_Click 'Save the file cdlg.DialogTitle = "Select a file" End If End If cdlg.DialogTitle = "Open Text File" cdlg.Flags = 4 cdlg.InitDir = "C:\" cdlg.ShowOpen fhandle = FreeFile fname = cdlg.FileName Open fname For Input As fhandle txtedit.Text = Input(LOF(fhandle), fhandle) Close fhandle txtedit.Visible = True mnuSave.Enabled = False changed = False Exit Sub loi: MsgBox "Tap tin qua lon !" End Sub Mã lệnh cho menu Paste Private Sub mnuPaste_Click() txtedit.SelText = Clipboard.GetText() End Sub Mã lệnh cho menu Save Private Sub mnuSave_Click() cdlg.DialogTitle = "Save Your Text File" cdlg.ShowSave fhandle = FreeFile Open cdlg.FileName For Output As fhandle Print #fhandle, txtedit.Text me.Caption = "NoteBook " + cdlg.FileName Close #fhandle changed = False End Sub Mã lệnh cho sự kiện văn bản trong ô textbox bị thay đổi Private Sub txtedit_Change() changed = True mnuSave.Enabled = True PMT -= Trang 4 =-
  47. Bài tập Visual Basic Phần nâng cao End Sub PMT -= Trang 5 =-
  48. Bài tập Visual Basic Phần nâng cao Bài 13 Viết chương trình xử lý tập tin nhị phân Yêu cầu 1. Tạo menu File như sau 2. Menu File chứa các lệnh thao tác trên tập tin nhị phân như tạo mới, mở tập tin và chức năng thoát chương trình Phân tích 1. Dùng 1 đối tượng Shape để hiển thị các kiểu hình 2. Dùng 3 đối tượng command button để tạo 3 nút nhấn 3. Dùng 2 đối tượng Frame để chứa các nút option 4. Dùng 4 đối tượng option button để chọn kiểu hình 5. Dùng 3 đối tượng thanh cuộn VscrollBar để chọn tỉ lệ màu Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmDohoa Form Caption Do hoa trong VB PMT -= Trang 6 =-
  49. Bài tập Visual Basic Phần nâng cao FontName VNI-Times FontSize 11 Name mnuFile Cấp 1 Caption &Flie Name mnuNew Cấp 2 Caption New Name mnuOpen Cấp 2 Menu Menu1 Caption Open Name separator Cấp 2 Caption - Name mnuExit Cấp 2 Caption Exit Name cmdLuu Command1 Caption Lưu Name cmdSau Command Command2 Caption >> Name cmdTruoc Command3 Caption << Name fraHinh Frame1 Caption Chọn kiểu hình Frame Name fraMau Frame2 Caption Chọn màu Name optHinh Option1 Index 0 Caption Hình chữ nhật Name optHinh Option2 Index 1 Caption Hình vuông Option Button Name optHinh Option3 Index 2 Caption Hình elip Name optHinh Option4 Index 3 Caption Hình tròn Name vsbRed VscrollBar1 Min 0 Max 255 Name vsbGreen VScrollBar VscrollBar2 Min 0 Max 255 Name vsbBlue VscrollBar3 Min 0 Max 255 Shape Shape1 Name shpHinh 2) Viết mã lệnh xử lý: Mã lệnh khai báo kiểu dữ liệu mới và các biến toàn cục PMT -= Trang 7 =-
  50. Bài tập Visual Basic Phần nâng cao Private Type dohoa hinh As Integer red As Integer Green As Integer Blue As Integer End Type Dim fname As String, thefile As Integer Dim X As dohoa, current As Integer, sorecord As Integer Mã lệnh cho sự kiện thanh trượt Blue bị thay đổi Private Sub vsbBlue_Change() shpHinh.FillColor = RGB(vsbRed.Value, vsbGreen.Value, vsbBlue.Value) End Sub Mã lệnh cho nút lệnh Lưu Private Sub cmdluu_Click() sorecord = sorecord + 1 current = sorecord X.hinh = shpHinh.Shape X.red = vsbRed.Value X.Green = vsbGreen.Value X.Blue = vsbBlue.Value thefile = FreeFile Open fname For Random As thefile Len = Len(X) Put thefile, current, X Close thefile cmdtruoc.Enabled = True cmdsau.Enabled = True End Sub Mã lệnh cho nút lệnh di chuyển về sau Private Sub cmdsau_Click() If current < sorecord Then current = current + 1 thefile = FreeFile Open fname For Random As thefile Len = Len(X) Get thefile, current, X Close thefile Opthinh(X.hinh).Value = True vsbRed.Value = X.red vsbGreen.Value = X.Green vsbBlue.Value = X.Blue End If End Sub PMT -= Trang 8 =-
  51. Bài tập Visual Basic Phần nâng cao Mã lệnh cho nút lệnh di chuyển về trước Private Sub cmdtruoc_Click() If current > 1 Then current = current - 1 thefile = FreeFile Open fname For Random As thefile Len = Len(X) Get thefile, current, X Close thefile OptHinh(X.hinh).Value = True vsbRed.Value = X.red vsbGreen.Value = X.Green vsbBlue.Value = X.Blue End If End Sub Mã lệnh cho sự kiện form được nạp vào bộ nhớ Private Sub Form_Load() fraHinh.Enabled = False fraMau.Enabled = False cmdtruoc.Enabled = False cmdsau.Enabled = False cmdluu.Enabled = False End Sub Mã lệnh cho sự kiện thanh trượt Green bị thay đổi Private Sub vsbGreen_Change() shpHinh.FillColor = RGB(vsbRed.Value, vsbGreen.Value, vsbBlue.Value) End Sub Mã lệnh cho menu New Private Sub mnuNew_Click() Cdlg.ShowSave fname = Cdlg.FileName current = 0 sorecord = 0 fraHinh.Enabled = True fraMau.Enabled = True cmdluu.Enabled = True End Sub Mã lệnh cho menu Open Private Sub mnuopen_Click() Cdlg.ShowOpen fname = Cdlg.FileName current = 1 sorecord = FileLen(fname) \ Len(X) thefile = FreeFile Open fname For Random As thefile Len = Len(X) Get thefile, 1, X Close thefile PMT -= Trang 9 =-
  52. Bài tập Visual Basic Phần nâng cao shpHinh.Shape = X.hinh vsbRed.Value = X.red vsbGreen.Value = X.Green vsbBlue.Value = X.Blue cmdtruoc.Enabled = True cmdsau.Enabled = True 'cmdluu.Enabled = True End Sub Mã lệnh cho sự kiện chọn hình mới Private Sub OptHinh_Click(Index As Integer) shpHinh.Shape = Index End Sub Mã lệnh cho sự kiện thanh trượt Red bị thay đổi Private Sub vsbRed_Change() shpHinh.FillColor = RGB(vsbRed.Value, vsbGreen.Value, vsbBlue.Value) End Sub Viết chương trình quản lý hồ sơ nhân viên, dũ liệu lưu trữ trong cơ sở dữ liệu Bài 14 Access với giao diện như sau PMT -= Trang 10 =-
  53. Bài tập Visual Basic Phần nâng cao Yêu cầu 1. Các nút mũi tên dùng để di chuyển qua lại giữa các mẫu tin 2. Các nút thêm, sửa, xoá, lưu dùng thao tác trên mẫu tin 3. Nguồn dữ liệu cho form được lấy từ bảng “Nhan vien” trong cơ sở dữ liệu Hoadon.mdb, truy xuất thông qua đối tượng ADODC 4. Trạng thái của các nút nhấn tuỳ theo người dùng thực hiện thao tác gì trên dữ liệu Phân tích 1. Dùng 1 đối tượng SSTab để tạo các thẻ Tab 2. Dùng 9 đối tượng command button để tạo 9 nút nhấn 3. Dùng 1 đối tượng DataCombo để làm ô chọn chức vụ 4. Dùng 8 đối tượng TextBox để hiển thị các thông tin về nhân viên 5. Dùng 1 đối tượng CheckBox để chọn giới tính Thực hiện 1) Thiết kế giao diện: Tạo form với giao diện như hình trên, thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmHosoNV Caption Ho so nhan vien Form FontName VNI-Times FontSize 11 SSTab SSTab1 Name sstTTNV PMT -= Trang 11 =-
  54. Bài tập Visual Basic Phần nâng cao Control Caption (Tab:1) Thông tin cá nhân Caption (Tab:2) Công việc Name cmdDau Command1 Caption | > Name cmdCuoi Command4 Caption >| Command Name cmdThem Command5 Button Caption Thêm Name cmdSua Command6 Caption Sửa Name cmdXoa Command7 Caption Xoá Name cmdLuu Command8 Caption Lưu Name cmdBoqua Command9 Caption Bỏ qua Name txtHo Text 1 Data Field Ho Data Source AdoNV Name txtTen Text 2 Data Field Ten Data Source AdoNV Name txtNgaysinh Text 3 Data Field Ngaysinh Data Source AdoNV Name txtDiachi Text 4 Data Field Diachi Data Source AdoNV TextBox Name txtManv Text 5 Data Field Manv Data Source AdoNV Name txtNgaylv Text 6 Data Field NgayNV Data Source AdoNV Name txtDT Text 7 Data Field Dienthoai Data Source AdoNV Name txtLuong Text 8 Data Field LuongCB Data Source AdoNV Name chkPhainu CheckBox Check 1 Data Field Nu Data Source AdoNV PMT -= Trang 12 =-
  55. Bài tập Visual Basic Phần nâng cao Name AdoNV CommandType 2-adCmdTable Provider=Microsoft.Jet.OLEDB.4.0; Adodc1 Connection String Data Source=C:\hd.mdb;Persist Security Info=False RecordSource [Nhan vien] Visible False ADODC Name AdoCV Control CommandType 1-adCmdText Provider=Microsoft.Jet.OLEDB.4.0; Connection String Data Source=C:\hd.mdb;Persist Adodc2 Security Info=False select distinct chucvu from [Nhan RecordSource Vien] Visible False Name dcbCV Data Field Nu DataCombo DataCombo1 Data Source AdoNV ListField Chucvu RowSource AdoCV 2) Viết mã lệnh xử lý: Mã lệnh khai báo biến toàn cục Dim mark As Variant Mã lệnh cho nút bỏ qua Private Sub cmdBoqua_Click() If AdoNV.Recordset.EditMode = adEditAdd Then AdoNV.Recordset.CancelBatch Else AdoNV.Recordset.CancelUpdate AdoNV.Refresh End If AdoNV.Recordset.Bookmark = mark khoadieukhien True End Sub Mã lệnh cho nút cuối Private Sub cmdCuoi_Click() AdoNV.Recordset.MoveLast End Sub Mã lệnh cho nút đầu Private Sub cmdDau_Click() AdoNV.Recordset.MoveFirst End Sub Mã lệnh cho nút lưu PMT -= Trang 13 =-
  56. Bài tập Visual Basic Phần nâng cao Private Sub cmdLuu_Click() AdoNV.Recordset.Update khoadieukhien True End Sub Mã lệnh cho nút sau Private Sub cmdSau_Click() If AdoNV.Recordset.EOF Then AdoNV.Recordset.MoveLast Else AdoNV.Recordset.MoveNext If AdoNV.Recordset.EOF Then AdoNV.Recordset.MoveLast End If End Sub Mã lệnh cho nút sửa Private Sub cmdSua_Click() khoadieukhien False mark = AdoNV.Recordset.Bookmark End Sub Mã lệnh cho nút thêm Public Sub cmdThem_Click() AdoNV.Recordset.AddNew mark = AdoNV.Recordset.Bookmark khoadieukhien False End Sub Mã lệnh cho nút trước Private Sub cmdTruoc_Click() If AdoNV.Recordset.BOF Then AdoNV.Recordset.MoveFirst Else AdoNV.Recordset.MovePrevious If AdoNV.Recordset.BOF Then AdoNV.Recordset.MoveFirst End If End Sub Mã lệnh cho nút xoá Private Sub cmdXoa_Click() If MsgBox("Ban co chac muon xoa record nay khong ?", vbInformation + _ vbYesNo, "Thong bao") = vbYes Then AdoNV.Recordset.Delete If AdoNV.Recordset.EOF Then AdoNV.Recordset.MoveLast Else AdoNV.Recordset.MoveNext End if End If End Sub PMT -= Trang 14 =-
  57. Bài tập Visual Basic Phần nâng cao Mã lệnh cho sự kiện form load Private Sub Form_Load() khoadieukhien True End Sub Mã lệnh cho thủ tục khoá các điều khiển trên form Private Sub khoadieukhien(khoa As Boolean) txtHo.Locked = khoa txtTen.Locked = khoa txtNgaysinh.Locked = khoa txtDiachi.Locked = khoa txtManv.Locked = khoa txtLuong.Locked = khoa txtDT.Locked = khoa txtNgaylv.Locked = khoa chkPhainu.Enabled = Not khoa dcbcv.Enabled = Not khoa cmdThem.Enabled = khoa cmdSua.Enabled = khoa cmdXoa.Enabled = khoa cmdLuu.Enabled = Not khoa cmdBoqua.Enabled = Not khoa cmdDau.Enabled = khoa : cmdTruoc.Enabled = khoa cmdSau.Enabled = khoa : cmdCuoi.Enabled = khoa End Sub Bài 15 Xây dựng ứng dụng Quản lý danh bạ điện thoại dựa trên CSDL sau được thiết kế bằng Access Với các yêu cầu xử lý sau: 1) Có một cửa sổ giao diện chính với hệ thống menu lựa chọn 2) Tạo một Module cho phép kết nối CSDL 3) Có các form cập nhật danh mục vùng và sổ danh bạ 4) Có các form tìm kiếm và tra cứu dữ liệu 5) Có các report cho phép in ấn các danh mục và kết quả tra cứu 1) Thiết kế form giao diện chính: PMT -= Trang 15 =-
  58. Bài tập Visual Basic Phần nâng cao Tạo form chính với giao diện như bên dưới Tạo hệ thống menu gồm Mã lệnh cho form chính Mã lệnh cho sự kiện form load Private Sub Form_Load() open_mdb End Sub Mã lệnh cho sự kiện form thay đổi kích thước Private Sub Form_Resize() Img.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight End Sub Mã lệnh cho menu Cập nhật danh mục Private Sub mnuDanhmuc_Click(Index As Integer) Select Case Index Case 0: frmTinh.Show ‘Danh sách vùng Case 1: frmDB_DT.Show ‘Sổ danh bạ PMT -= Trang 16 =-
  59. Bài tập Visual Basic Phần nâng cao End Select End Sub Mã lệnh cho menu Thống kê tìm kiếm Private Sub mnuTK_Click(Index As Integer) Select Case Index Case 0: ‘Danh sách vùng If DE1.rsTinh.State = 0 Then DE1.rsTinh.Open DE1.rsTinh.Requery Report_Tinh.Show Case 1: ‘Danh bạ điện thoại theo vùng If DE1.rsVung.State = 0 Then DE1.rsVung.Open DE1.rsVung.Requery Report_DBDT.Show Case 2: ‘Tra cứu danh bạ frmTraCuu.Show 1 End Select End Sub Mã lệnh cho menu Thoát Private Sub mnuThoat_Click() End End Sub 2) Tạo Module tên “KetnoiCSDL” kết nối dữ liệu từ CSDL Phone.mdb: Mã lệnh khai báo biến toàn cục Public cn As New ADODB.Connection Mã lệnh cho thủ tục kết nối dữ liệu Sub open_mdb() Dim db_name, str As String db_name = App.Path & "\phone.mdb" str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db_name & "" DE1.CN1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;” _ Persist Security Info=False;Data Source=" & db_name & "" DE1.CN1.Open cn.Open str End Sub PMT -= Trang 17 =-
  60. Bài tập Visual Basic Phần nâng cao 3) Tạo form cập nhật danh mục vùng: Tạo giao diện cho form như hình dưới Thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmTinh Caption Danh muc ma vung Form FontName VNI-Times FontSize 11 Name lvlItem ListView ListView1 HideSelection True Control LabelEdit 0-lvwAutomatic Name cmdNew Command1 Caption Mới Name cmdUpdate Command2 Caption Sửa Name cmdDel Command3 Caption Xoá Command Name cmdSave Button Command4 Caption Lưu Name cmdSkip Command5 Caption Bỏ qua Name cmdPrint Command6 Caption In Command7 Name cmdClose PMT -= Trang 18 =-
  61. Bài tập Visual Basic Phần nâng cao Caption Thoát Name txtMa Text 1 Text Bỏ trắng TextBox Name txtTen Text 2 Text Bỏ trắng Mã lệnh cho form Mã lệnh khai báo biến toàn cục Private flag As String Mã lệnh cho nút Thoát Private Sub cmdClose_Click() Unload Me End Sub Mã lệnh cho nút Xoá Private Sub cmdDel_Click() Xoa_Du_Lieu End Sub Mã lệnh cho nút Mới Private Sub cmdNew_Click() Un_Lock_Text SET_NULL End Sub Mã lệnh cho nút In Private Sub cmdPrint_Click() If DE1.rsTinh.State = 0 Then DE1.rsTinh.Open End If DE1.rsTinh.Requery Report_Tinh.Show 1 End Sub Mã lệnh cho nút Lưu Private Sub cmdSave_Click() If flag <> "update" Then flag = "save" Luu_Du_Lieu End Sub Mã lệnh cho nút Bỏ qua Private Sub cmdSkip_Click() SET_NULL Lock_Text End Sub PMT -= Trang 19 =-
  62. Bài tập Visual Basic Phần nâng cao Mã lệnh cho nút Sửa Private Sub cmdUpdate_Click() flag = "update" Sua_Du_Lieu End Sub Mã lệnh cho sự kiện form load Private Sub Form_Load() Lock_Text Display_Listview End Sub Mã lệnh xử lý khi click chuột trên Listbox Private Sub lvlItem_ItemClick(ByVal Item As MSComctlLib.ListItem) txtMa = Item.Text txtTen = Item.SubItems(1) End Sub Mã lệnh cho thủ tục xoá dữ liệu Private Sub Xoa_Du_Lieu() Dim str Dim response If Trim(txtMa) = "" Then Exit Sub response = MsgBox("Ban co chac chan xoa ma vung nay khong?", _ vbYesNo + vbQuestion, "Thong bao") If response = vbNo Then Exit Sub Else str = "delete from tinh where mavung='" & Trim(txtMa) & "'" cn.Execute (str) End If SET_NULL : Lock_Text Display_Listview End Sub Mã lệnh cho thủ tục lưu dữ liệu Private Sub Luu_Du_Lieu() Dim rs As New ADODB.Recordset Dim str If Trim(txtMa) = "" Or Trim(txtTen) = "" Then MsgBox "Chu y:Phai nhap du lieu day du truoc khi luu", _ vbOKOnly + vbExclamation, "Thong bao" Exit Sub End If str = "select * from tinh where mavung='" & Trim(txtMa) & "'" rs.Open str, cn If rs.EOF = True Then str = "insert into tinh values('" & Trim(txtMa) _ & "', '" & Trim(txtTen) & "')" cn.Execute (str) Else PMT -= Trang 20 =-
  63. Bài tập Visual Basic Phần nâng cao If flag = "save" Then MsgBox "Ma vung [ " & txtMa & " ] da ton tai. Vui long kiem _ tra lai", vbOKOnly + vbExclamation, "Thong bao" Me.MousePointer = 0 Exit Sub End If str = "update tinh set tentinh='" & Trim(txtTen) _ & "' where mavung='" & Trim(txtMa) & "'" cn.Execute (str) End If Lock_Text Display_Listview cmdNew.SetFocus Me.MousePointer = 0 End Sub Mã lệnh cho thủ tục xoá trắng các ô textbox Private Sub SET_NULL() txtMa = "" txtTen = "" End Sub Mã lệnh cho thủ tục khoá các ô textbox Private Sub Lock_Text() txtMa.Enabled = False txtTen.Enabled = False cmdSave.Enabled = False cmdSave.Enabled = False cmdSkip.Enabled = False cmdNew.Enabled = True cmdUpdate.Enabled = True cmdDel.Enabled = True flag = "" End Sub Mã lệnh cho thủ tục mở khoá các text box Private Sub Un_Lock_Text() txtMa.Enabled = True txtTen.Enabled = True txtMa.SetFocus cmdSave.Enabled = True cmdSkip.Enabled = True cmdNew.Enabled = False cmdUpdate.Enabled = False cmdDel.Enabled = False End Sub Mã lệnh cho thủ tục hiển thị dữ liệu trong list view Private Sub Display_Listview() Dim rs As New ADODB.Recordset Dim str PMT -= Trang 21 =-
  64. Bài tập Visual Basic Phần nâng cao Dim mItem As ListItem lvlItem.ListItems.Clear str = "select * from tinh order by mavung asc" rs.Open str, cn, adOpenKeyset, adLockOptimistic, adCmdText If rs.EOF = False Then While Not rs.EOF Set mItem = lvlItem.ListItems.Add(, , rs!mavung) mItem.SubItems(1) = rs!tentinh rs.MoveNext Wend End If End Sub Mã lệnh cho thủ tục sửa dữ liệu Private Sub Sua_Du_Lieu() Un_Lock_Text txtMa.Enabled = False txtTen.SetFocus End Sub Mã lệnh cho sự kiện chọn vào ô text mã vùng Private Sub txtMa_GotFocus() txtMa.BackColor = &HC0E0F0 End Sub Mã lệnh cho sự kiện nhấn phím trên text mã Private Sub txtMa_KeyPress(KeyAscii As Integer) If KeyAscii=13 then txtTen.SetFocus End If End Sub Mã lệnh cho sự kiện mất focus trên text mã Private Sub txtMa_LostFocus() txtMa.BackColor = &HFFFFFF txtMa = Trim(txtMa) End Sub Mã lệnh cho sự kiện mất focus trên text tên Private Sub txtTen_LostFocus() txtMa.BackColor = &HFFFFFF End Sub Mã lệnh cho sự kiện có focus trên text tên Private Sub txtTen_GotFocus() txtTen.BackColor = &HC0E0F0 End Sub Mã lệnh cho sự kiện nhấn phím trên text tên PMT -= Trang 22 =-
  65. Bài tập Visual Basic Phần nâng cao Private Sub txtTen_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then cmdSave.SetFocus End If End Sub 4) Tạo form cập nhật danh bạ điện thoại: Tạo form giao diện như hình dưới Thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmDB_DT Caption Danh ba dien thoai Form FontName VNI-Times FontSize 11 Name lvlItem ListView ListView1 HideSelection True Control LabelEdit 0-lvwAutomatic Name cmdNew Command1 Caption Mới Name cmdUpdate Command2 Command Caption Sửa Button Name cmdDel Command3 Caption Xoá Name cmdSave Command4 Caption Lưu PMT -= Trang 23 =-
  66. Bài tập Visual Basic Phần nâng cao Name cmdSkip Command5 Caption Bỏ qua Name cmdPrint Command6 Caption In Name cmdClose Command7 Caption Thoát Name cmdSelect Command8 Caption Name txtMavung Text 1 Text Bỏ trắng Name txtTentinh Text 2 Text Bỏ trắng Name txtDT Text 3 Text Bỏ trắng TextBox Name txtHo Text 4 Text Bỏ trắng Name txtTen Text 5 Text Bỏ trắng Name txtDC Text 6 Text Bỏ trắng Mã lệnh cho form Mã lệnh khai báo biến toàn cục Private flag As String Mã lệnh cho nút Thoát Private Sub cmdClose_Click() Unload Me End Sub Mã lệnh cho nút Xoá Private Sub cmdDel_Click() Xoa_Du_Lieu End Sub Mã lệnh cho nút Mới Private Sub cmdNew_Click() Un_Lock_Text SET_NULL End Sub Mã lệnh cho nút In Private Sub cmdPrint_Click() If DE1.rsVung.State = 0 Then DE1.rsVung.Open DE1.rsVung.Requery Report_DBDT.Show End Sub PMT -= Trang 24 =-
  67. Bài tập Visual Basic Phần nâng cao Mã lệnh cho nút Lưu Private Sub cmdSave_Click() If flag <> "update" Then flag = "save" Luu_Du_Lieu End Sub Mã lệnh cho nút chọn mã vùng Private Sub cmdSelect_Click() frmChon_Vung.Show 1 cmdSave.SetFocus End Sub Mã lệnh cho nút Bỏ qua Private Sub cmdSkip_Click() SET_NULL Lock_Text End Sub Mã lệnh cho nút Sửa Private Sub cmdUpdate_Click() flag = "update" Sua_Du_Lieu End Sub Mã lệnh cho sự kiện form load Private Sub Form_Load() Lock_Text Display_Listview End Sub Mã lệnh xử lý khi click chuột trên Listbox Private Sub lvlItem_ItemClick(ByVal Item As MSComctlLib.ListItem) Dim rs As New ADODB.Recordset Dim str txtDT = Item.Text txtHo = Item.SubItems(1) txtTen = Item.SubItems(2) txtDC = Item.SubItems(3) txtMaVung = Item.SubItems(4) txtTenTinh = Item.SubItems(5) End Sub Mã lệnh cho sự kiện chọn vào ô text địa chỉ Private Sub txtDC_GotFocus() txtDC.BackColor = &HC0E0F0 End Sub Mã lệnh cho sự kiện nhấn phím trên text địa chỉ PMT -= Trang 25 =-
  68. Bài tập Visual Basic Phần nâng cao Private Sub txtDC_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then cmdSave.SetFocus End If End Sub Mã lệnh cho sự kiện mất focus trên text địa chỉ Private Sub txtDC_LostFocus() txtDC.BackColor = &HFFFFFF txtDC = UCase(Trim(txtDC)) End Sub Mã lệnh cho sự kiện chọn vào ô text điện thoại Private Sub txtDT_GotFocus() txtDT.BackColor = &HC0E0F0 End Sub Mã lệnh cho sự kiện nhấn phím trên text điện thoại Private Sub txtDT_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtHo.SetFocus End If End Sub Mã lệnh cho sự kiện mất focus trên text điện thoại Private Sub txtDT_LostFocus() txtDT.BackColor = &HFFFFFF txtDT = UCase(Trim(txtDT)) End Sub Mã lệnh cho sự kiện chọn vào ô text mã vùng Private Sub txtHo_GotFocus() txtHo.BackColor = &HC0E0F0 End Sub Mã lệnh cho sự kiện nhấn phím trên text họ Private Sub txtHo_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtTen.SetFocus End If End Sub Mã lệnh cho sự kiện mất focus trên text họ Private Sub txtHo_LostFocus() txtHo.BackColor = &HFFFFFF txtHo = Trim(txtHo) End Sub PMT -= Trang 26 =-
  69. Bài tập Visual Basic Phần nâng cao Mã lệnh cho sự kiện chọn vào ô text mã vùng Private Sub txtMaVung_GotFocus() txtMaVung.BackColor = &HC0E0F0 End Sub Mã lệnh cho sự kiện nhấn phím trên text mã Private Sub txtMaVung_KeyPress(KeyAscii As Integer) Dim str Dim rs As New ADODB.Recordset Select Case KeyAscii Case 13 str = "select tentinh from tinh where mavung='" & txtMaVung & "'" rs.Open str, cn If rs.EOF = False Then txtTenTinh = rs!tentinh txtDT.SetFocus Else frmChon_Vung.Show 1 End If End Select End Sub Mã lệnh cho thủ tục xoá dữ liệu Private Sub Xoa_Du_Lieu() Dim str Dim response If Trim(txtDT) = "" Then Exit Sub response = MsgBox("Ban co chac chan xoa so dien thoai nay khong?", vbYesNo + vbQuestion, "Thong bao") If response = vbNo Then Exit Sub Else str = "delete from sodanhba where sodt='" & Trim(txtDT) & "'" cn.Execute (str) End If SET_NULL Lock_Text Display_Listview End Sub Mã lệnh cho thủ tục lưu dữ liệu Private Sub Luu_Du_Lieu() Dim rs As New ADODB.Recordset Dim str If Trim(txtDT) = "" Or Trim(txtMaVung) = "" Or Trim(txtTen) = "" Then MsgBox "Chu y:Phai nhap du lieu day du truoc khi luu", _ vbOKOnly + vbExclamation, "Thong bao" Me.MousePointer = 0 Exit Sub End If str = "select * from sodanhba where sodt='" & Trim(txtDT) & "'" rs.Open str, cn PMT -= Trang 27 =-
  70. Bài tập Visual Basic Phần nâng cao If rs.EOF = True Then str = "insert into sodanhba values('" & Trim(txtMaVung) & "', '" & _ Trim(txtDT) & "', '" & Trim(txtHo) & "', '" & Trim(txtTen) & "', '" & _ Trim(txtDC) & "')" cn.Execute (str) Else If flag = "save" Then MsgBox "So dien thoai [ " & txtDT & " ] da ton tai.Vui long kiem _ tra lai", vbOKOnly + vbExclamation, "Thong bao" Me.MousePointer = 0 Exit Sub End If str = "update sodanhba set ho='" & Trim(txtHo) & "', ten='" & _ Trim(txtTen) & "' where sodt='" & Trim(txtDT) & "'" cn.Execute (str) End If Lock_Text Display_Listview cmdNew.SetFocus Me.MousePointer = 0 End Sub Mã lệnh cho thủ tục xoá trắng các ô textbox Private Sub SET_NULL() txtDT = "" txtHo = "" txtTen = "" txtDC = "" txtMaVung = "" txtTenTinh = "" End Sub Mã lệnh cho thủ tục khoá các ô textbox Private Sub Lock_Text() txtDT.Enabled = False txtDC.Enabled = False txtHo.Enabled = False txtTen.Enabled = False txtMaVung.Enabled = False txtTenTinh.Enabled = False cmdSelect.Enabled = False cmdSave.Enabled = False cmdSkip.Enabled = False cmdNew.Enabled = True cmdUpdate.Enabled = True cmdDel.Enabled = True flag = "" End Sub Mã lệnh cho thủ tục mở khoá các text box Private Sub Un_Lock_Text() txtDT.Enabled = True PMT -= Trang 28 =-
  71. Bài tập Visual Basic Phần nâng cao txtDC.Enabled = True txtHo.Enabled = True txtTen.Enabled = True txtMaVung.Enabled = True txtTenTinh.Enabled = True cmdSelect.Enabled = True cmdSave.Enabled = True cmdSkip.Enabled = True cmdNew.Enabled = False cmdUpdate.Enabled = False cmdDel.Enabled = False txtMaVung.SetFocus End Sub Mã lệnh cho thủ tục hiển thị dữ liệu trong list view Private Sub Display_Listview() Dim rs As New ADODB.Recordset Dim rs1 As New ADODB.Recordset Dim str Dim mItem As ListItem lvlItem.ListItems.Clear str = "select * from sodanhba order by sodt asc" rs.Open str, cn, adOpenKeyset, adLockOptimistic, adCmdText If rs.EOF = False Then While Not rs.EOF Set mItem = lvlItem.ListItems.Add(, , rs!sodt) mItem.SubItems(1) = rs!ho mItem.SubItems(2) = rs!ten mItem.SubItems(3) = rs!diachi mItem.SubItems(4) = rs!mavung str = "select tentinh from tinh where mavung='" & rs!mavung & "'" rs1.Open str, cn If rs1.EOF = False Then mItem.SubItems(5) = rs1!tentinh End If rs1.Close rs.MoveNext Wend End If End Sub Mã lệnh cho thủ tục sửa dữ liệu Private Sub Sua_Du_Lieu() Un_Lock_Text txtDT.Enabled = False txtHo.SetFocus End Sub Mã lệnh cho sự kiện mất focus trên ô text mã vùng Private Sub txtMaVung_LostFocus() txtMaVung.BackColor = &HFFFFFF PMT -= Trang 29 =-
  72. Bài tập Visual Basic Phần nâng cao End Sub Mã lệnh cho sự kiện chọn vào ô text tên Private Sub txtTen_GotFocus() txtTen.BackColor = &HC0E0F0 End Sub Mã lệnh cho sự kiện nhấn phím trên text tên Private Sub txtTen_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtDC.SetFocus End If End Sub Mã lệnh cho sự kiện mất focus trên text tên Private Sub txtTen_LostFocus() txtTen.BackColor = &HFFFFFF txtTen = Trim(txtTen) End Sub 5) Tạo form cập nhật danh mục vùng: Tạo giao diện cho form như hình dưới Thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmChon_Vung Form Caption Chon vung FontName VNI-Times PMT -= Trang 30 =-
  73. Bài tập Visual Basic Phần nâng cao FontSize 11 Name lvlItem ListView ListView1 HideSelection True Control LabelEdit 0-lvwAutomatic Name cmdSelect Command1 Caption Chọn Command Name cmdAdd Command2 Button Caption Thêm &mới Name cmdClose Command3 Caption Thoát Mã lệnh cho form Mã lệnh khai báo biến toàn cục Dim ma, ten Mã lệnh cho nút Thêm mới Private Sub cmdAdd_Click() frmTinh.Show 1 End Sub Mã lệnh cho nút Chọn Private Sub cmdSelect_Click() frmDB_DT.txtMaVung = ma frmDB_DT.txtTenTinh = ten Unload Me End Sub Mã lệnh cho nút Thoát Private Sub cmdClose_Click() Unload Me End Sub Mã lệnh cho sự kiện form bắt đầu hoạt động Private Sub Form_Activate() Dim rs As New ADODB.Recordset Dim str Dim mItem As ListItem str = "select * from tinh" rs.Open str, cn, adOpenKeyset, adLockOptimistic, adCmdText If rs.EOF = False Then While Not rs.EOF Set mItem = lvlItem.ListItems.Add(, , rs!mavung) mItem.SubItems(1) = rs!tentinh rs.MoveNext Wend End If End Sub Mã lệnh cho sự kiện nhắp đúp trên list view PMT -= Trang 31 =-
  74. Bài tập Visual Basic Phần nâng cao Private Sub lvlItem_DblClick() cmdChon_Click End Sub Mã lệnh cho sự kiện chọn 1 mục trên list view Private Sub lvlItem_ItemClick(ByVal Item As MSComctlLib.ListItem) ma = Item.Text ten = Item.SubItems(1) End Sub Mã lệnh cho sự kiện nhấn phím trên list view Private Sub lvlItem_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 cmdChon_Click End Select End Sub 6) Tạo report danh mục vùng: Tạo report in ấn danh mục mã vùng như hình dưới, đặt tên Report_Tinh 7) Tạo report danh bạ điện thoại theo vùng: Tạo report in ấn danh mục mã vùng như hình dưới, đặt tên Report_DBDT PMT -= Trang 32 =-
  75. Bài tập Visual Basic Phần nâng cao 8) Tạo form tra cứu: Tạo giao diện cho form như hình dưới Thiết lập các thuộc tính cho các điều khiển trên form như sau: Đối tượng Điều khiển Thuộc tính Giá trị Ghi chú Name frmTracuu Form Caption Tra cuu danh ba PMT -= Trang 33 =-
  76. Bài tập Visual Basic Phần nâng cao FontName VNI-Times FontSize 11 Name cmdAdd Command1 Command Caption Thêm &mới Button Name cmdClose Command2 Caption Thoát Name optTen Option1 Caption Theo tên Name optVung Option2 Caption Theo mã vùng Name optAll Option Button Option3 Caption Tất cả Name optDT Option4 Caption Số phone Name optDC Option5 Caption Địa chỉ Mã lệnh cho form Mã lệnh cho nút In ấn Private Sub cmdIn_Click() Dim str If optDT Then str = "sodt like '*" & txtTraCuu & "*'" End If If optDC Then str = "diachi like '*" & txtTraCuu & "*'" End If If optTen Then str = "ten like '*" & txtTraCuu & "*'" End If If optVung Then str = "mavung like '*" & txtTraCuu & "*'" End If If DE1.rsTraCuu.State = 0 Then DE1.rsTraCuu.Open If txtTraCuu <> "" Then DE1.rsTraCuu.Filter = str Report_TraCuu.Show 1 End Sub Mã lệnh cho nút Thoát Private Sub cmdThoat_Click() Unload Me End Sub Mã lệnh cho sự kiện nhấn phím trên text tra cứu Private Sub txtTraCuu_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 cmdIn_Click End Select PMT -= Trang 34 =-
  77. Bài tập Visual Basic Phần nâng cao End Sub 9) Tạo report danh bạ điện thoại theo vùng: Tạo report in ấn danh mục mã vùng như hình dưới, đặt tên Report_Tracuu PMT -= Trang 35 =-