Bài tập lập trình hướng sự kiện

MỤC TIÊU: SAU KHI HOÀN THÀNH CÁC BÀI TẬP, NGƯỜI HỌC CÓ THỂ

¾ Xây dựng được các hệthống menu một cấp nhiều cấp, menu Popup

¾ Xây dựng được các hệthống thanh công cụ- Toolbar.

¾ Sửdụng thành thạo các thuộc tính và phương thức của điều khiển Dialog

¾ Phân biệt được giữa ứng dụng đa cửa sổvà đơn cửa sổ.

¾ Viết được một ứng dụng soạn thảo văn bản đơn giản với đa cửa sổ.

pdf14 trang | Chia sẻ: oanh_nt | Lượt xem: 1595 | Lượt tải: 0download
Nội dung tài liệu Bài tập lập trình hướng sự kiện, để tải tài liệu về máy 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 80 Ch−¬ng iiI SỬ DỤNG HỘP THOẠI CHUẨN & MENU MỤC TIÊU: SAU KHI HOÀN THÀNH CÁC BÀI TẬP, NGƯỜI HỌC CÓ THỂ ¾ Xây dựng được các hệ thống menu một cấp nhiều cấp, menu Popup ¾ Xây dựng được các hệ thống thanh công cụ - Toolbar. ¾ Sử dụng thành thạo các thuộc tính và phương thức của điều khiển Dialog ¾ Phân biệt được giữa ứng dụng đa cửa sổ và đơn cửa sổ. ¾ Viết được một ứng dụng soạn thảo văn bản đơn giản với đa cửa sổ. A - ĐỀ BÀI TẬP Bài 1: Xây dựng chương trình soạn thảo văn bản sử dụng điều khiển RichText. Hình 3.1 – giao diện chương trình Yêu cầu: • Chương trình hỗ trợ các phím tắt (Ctrl-O để mở, Ctrl-S để lưu v.v…) • Có thể định dạng chữ Đậm, nghiêng, gạch chân bằng cách nhấn tổ hợp phím tắt tương ứng là Ctrl-B, Ctrl-I, Ctrl-U. • Vùng soạn thảo (Textbox) có thể thay đổi kích thước khi Form thay đổi. • Khi một mục trên thanh menu được chọn thì mục đó sẽ được đánh dấu "9" Bài 2: Xây dựng chương trình như bài 1 nhưng có thêm menu "Màu chữ" cho phép người dùng đặt màu chữ cho nội dung văn bản. Hình 3.2 – Giao diện chương trình (Có thêm mục chọn "Màu chữ") 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 81 Bài 3: Xây dựng chương trình như bài 2, nhưng thêm khả năng hiển thị menu ngữ cảnh như sau: Khi người dùng chọn một đoạn văn bản và click chuột phải trong Richtextbox thì hiển thị (Popup) menu "Định dạng" còn khi người dùng không chọn đoạn văn bản nào nhưng click chuột phải thì hiển thị Menu "File". Tuy nhiên, việc định dạng font chữ ở đây là định dạng riêng cho phần được bôi đen. Hình 3.3 - Hiển thị menu cảm ngữ cảnh Bài 4: Xây dựng chương trình như bài 3 nhưng sử dụng cơ chế đa cửa sổ (Multi documents). Tức là chương trình cho phép soạn thảo nhiều tệp tin trong nhiều cửa sổ khác nhau. Hình 3.4 - Hệ thống đa cửa sổ (MultiDocuments) Bài 5: Xây dựng chương trình như bài 4, nhưng thêm một số mục trên thanh Menu của FormMDI bằng các nút lệnh trên thanh công cụ (ToolBar). Hình 3.5 - Hệ thống soạn thảo đa cửa sổ với thanh công cụ 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 82 Bài 6 : Như bài 5 nhưng chương trình có thêm thanh trạng thái (status bar) trong form chính (Xem hình 6). Trong thanh trạng thái có 3 ô, ô thứ nhất cho biết tổng số ký tự trong Richtextbox, ô thứ hai hiển thị thời gian, ô thứ 3 hiển thị ngày trong máy tính. Hình 3.6 - Bổ sung thêm thanh trạng thái 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 83 B. HƯỚNG DẪN - GIẢI MẪU Bài 1 a. Thiết kế giao diện Hình 3.10 – Giao diện chương trình Hình 3.11 - Đặt tên cho mục Menu Ngoài ra, trong lúc thiết kế đặt thuộc tính Scrollbar của Richtextbox là 3- Both b. Hướng dẫn: • Kết hợp sử dụng điều khiển Common Dialog để mở, lưu File • Sử dụng phương thức LoadFile, SaveFile để nạp, lưu file đang soạn thảo c. Chương trình mẫu Option Explicit '/// Xử lý khi người dùng click vào mục ""Đặt Font chữ" trên menu Private Sub mnuFont_Click() dlgMain.Flags = cdlCFBoth Or cdlCFEffects '/// Phải có trước khi ShowFont dlgMain.ShowFont '/// Hiển thị hộp thoại chọn font '/// Đặt font chữ của Richtext theo như thông tin người dùng đã chọn rtfNoiDung.Font.Name = dlgMain.FontName 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 84 rtfNoiDung.Font.Bold = dlgMain.FontBold rtfNoiDung.Font.Italic = dlgMain.FontItalic rtfNoiDung.Font.Underline = dlgMain.FontUnderline rtfNoiDung.Font.Size = dlgMain.FontSize End Sub '/// Đảo lại trạng thái trước đó: Nghiêng Ù Không nghiêng, Chọn Ù Không chọn Private Sub mnuItalic_Click() mnuItalic.Checked = Not mnuItalic.Checked '/// Hiện / ẩn dấu tích (9) rtfNoiDung.Font.Italic = Not rtfNoiDung.Font.Italic '///NghiêngÙKhông nghiêng End Sub '/// Xử lý cập nhật lại định dạng và trạng thái chọn khi người dùng chọn "Chữ nghiêng" Private Sub mnuUnderline_Click() mnuUnderline.Checked = Not mnuUnderline.Checked rtfNoiDung.Font.Underline = Not rtfNoiDung.Font.Underline End Sub '/// Xử lý cập nhật lại định dạng và trạng thái chọn khi người dùng chọn "Chữ đậm" Private Sub mnuBold_Click() mnuBold.Checked = Not mnuBold.Checked rtfNoiDung.Font.Bold = Not rtfNoiDung.Font.Bold End Sub '/// Tạo mới tài liệu khi người dùng chọn mục "New Ctrl-N" Private Sub mnuNew_Click() rtfNoiDung.TextRTF = "" End Sub '/// Xử lý mở file sử dụng điều khiển Dialog. Private Sub mnuOpen_Click() dlgMain.Filter = "Các file RTF |*.rtf|Các file TXT|*.txt|Tất cả các file (*.*)|*.*|" dlgMain.DialogTitle = "Më file" dlgMain.ShowOpen rtfNoiDung.LoadFile dlgMain.FileName End Sub '/// Lưu nội dung đang soạn ra đĩa, sử dụng phương thức SaveFile của Richtext Private Sub mnuSave_Click() dlgMain.Filter = "Các file RTF |*.rtf|Các file TXT|*.txt|Tất cả các file (*.*)|*.*|" dlgMain.DialogTitle = "Lưu văn bản ra file" dlgMain.ShowSave rtfNoiDung.SaveFile dlgMain.FileName, rtfRTF End Sub '/// Thay đổi kích thước của Richtext để nó luôn bằng Form mỗi khi kéo giãn Form Private Sub Form_Resize() rtfNoiDung.Top = 0 rtfNoiDung.Left = 0 rtfNoiDung.Height = Me.ScaleHeight rtfNoiDung.Width = Me.ScaleWidth End Sub d. Chú ý: • Có thể gán tổ hợp phím tắt cho các mục menu trong khi soạn Menu 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 85 • Hộp thoại Common Dialog không tự lưu file hay mở file mà nó chỉ cung cấp một hộp thoại để người dùng chọn hay gõ tên file mà thôi. • Có thể thay đổi phần mở rộng mặc định khi hộp Dialog mở ra • Khi hộp thoại Dialog mở ra, rất có thể người dùng sẽ nhấn Cancel. Khi đó, tên file nhận được sẽ là tên được mở trước đó. Như vậy, thực tế cần phải biết được người dùng đã nhấn "Open" hay nút "Cancel" để có xử lý phù hợp. • Font chữ trong menu thường là font hệ thống do vậy, nhìn chung là sẽ không hiển thị đúng trên các máy tính khác nhau khi chúng ta sử dụng Tiếng việt. • Khi lưu tệp văn bản bằng phương thức SaveFile, có một tham số cho biết là lưu dưới dạng tệp văn bản (Text) hay tệp Richtext. Giá trị của tham số này tương ứng là rtfText và rtfRTF. Bài 2 a. Giao diện như bài 1 nhưng có thêm mục "Màu chữ" với tên là mnuForeColor. b. Hướng dẫn: Sử dụng phương thức ShowColor của điều khiển Dialog c. Chương trình mẫu: (Chèn thêm đoạn lệnh xử lý sự kiện mnuForeColor_Click vào phần Code của bài 1) '///…………chèn phần chương trình nguồn của bài 1 vào đây ………………. Private Sub mnuForeColor_Click() dlgMain.ShowColor rtfNoiDung.SelStart = 0 rtfNoiDung.SelLength = Len(rtfNoiDung.Text) rtfNoiDung.SelColor = dlgMain.Color rtfNoiDung.SelLength = 0 End Sub d. Ghi chú • Điều khiển Richtext không có phương thức cho phép ta đặt màu chữ của toàn bộ nội dung mà chỉ cho phép đặt màu chữ của phần văn bản được bôi đen thông qua thuộc tính SelColor (Selected Color). • Có thể chọn (bôi đen) một đoạn văn bản bằng cách thiết lập các thuộc tính SelStart (Selected Start - vị trí bắt đầu bôi đen) và SelLength (Selected Length – Bôi đen bao nhiêu ký tự). Điều này có thể áp dụng cho cả Textbox. Bài 3 a. Thiết kế giao diện (Như bài tập số 2) Hiển thị menu "File" khi chưa bôi đen Hiển thị menu "Định dạng" khi bôi đen Hình 3.12 - Kết quả khi chạy chương trình 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 86 b. Hướng dẫn • Sử dụng phương thức PopupMenu để hiển thị menu tại vị trí con chuột • Đặt thuộc tính chữ đậm, nghiêng, màu … cho các thuộc tính SelBold, SelItalic, SelColor… tương ứng của điều khiển RichtextBox. • Muốn biết người dùng có bôi đen đoạn văn bản nào đó hay không thì chỉ việc kiểm tra dữ liệu trong thuộc tính SelText (nếu có thì độ dài của sẽ lớn hơn 0) c. Chương trình mẫu (Chương trình nguồn giống như bài tập số 2 nhưng sửa đổi các thủ tục sự kiện có tên sau đây ) Private Sub mnuItalic_Click() mnuItalic.Checked = Not mnuItalic.Checked rtfNoiDung.SelItalic = Not rtfNoiDung.SelItalic End Sub '----------------------------------------------------------------------------------------------------------------------------- Private Sub mnuUnderline_Click() mnuUnderline.Checked = Not mnuUnderline.Checked rtfNoiDung.SelUnderline = Not rtfNoiDung.SelUnderline End Sub '----------------------------------------------------------------------------------------------------------------------------- Private Sub mnuBold_Click() mnuBold.Checked = Not mnuBold.Checked rtfNoiDung.SelBold = Not rtfNoiDung.SelBold End Sub '----------------------------------------------------------------------------------------------------------------------------- Private Sub mnuForeColor_Click() dlgMain.ShowColor rtfNoiDung.SelColor = dlgMain.Color End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub rtfNoiDung_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) If Button = 2 Then '/// Nếu click chuột phải (nút chuột trái là 1) If Len(rtfNoiDung.SelText) = 0 Then Me.PopupMenu mnuFile If Len(rtfNoiDung.SelText) > 0 Then Me.PopupMenu mnuFormat End If End Sub d. Ghi chú: Khi làm việc với điều khiển Richtext, nếu các thuộc tính của điều khiển này có tiền tố là "Sel", ví dụ SelText, SelColor, SelBold… thì ta hiểu là đang làm việc với phần được bôi đen (hay chỉ phần được bôi đen bị tác động) Bài 4 a. Thiết kế giao diện • Với loại ứng dụng đa cửa sổ này thì trước tiên ta cần phải tạo ra một form dạng "MDI Form". Để tạo menu dạng này, hãy vào menu Project và chọn mục: . Sau đó, các form về sau khi thêm thì cần đặt thuộc tính MDIChild là True: nếu muốn là con của Form MDI ban đầu. • Trong bài tập này, tạo 2 form, một form loại MDI với tên là frmMain và một form thường có tên là frmDocument. Trong frmDocument, thêm một Richtext với tên là rtfNoiDung. Trong frmMain, tạo hệ thống menu như sau: 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 87 Hình 3.13 – Giao diện của Form MDI Hình 3.14– Giao diện của frmDocument (cần đặt thuộc tính MDIChild = True) b. Hướng dẫn • Sử dụng từ khoá New để tạo một thể hiện form mới. • Sử dụng hàm ActiveForm để trỏ tới form đang được kích hoạt. c. Chương trình mẫu (Viết cho form: frmDocument và MDI: frmMain) frmDocument.frm Option Explicit '/// Khi người dùng kéo giãn Form thì đặt lại kích thước của Richtext bằng với Form Private Sub Form_Resize() rtfNoiDung.Top = 0 rtfNoiDung.Left = 0 rtfNoiDung.Height = Me.ScaleHeight rtfNoiDung.Width = Me.ScaleWidth End Sub frmMain.frm Option Explicit Dim SoTT As Integer '/// Biến dùng để lưu số lượng Form tạo ra '/// Người dùng click chọn menu : "Tài liệu mới" Private Sub mnuNew_Click() Dim F As New frmDocument '///Tạo một thể hiện mới của frmDocument SoTT = SoTT + 1 F.Caption = "Tài liệu thứ " & SoTT '/// Đặt tiêu đề cho cửa sổ (form) mới F.Show '/// Hiển thị form vừa tạo 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 88 '/// Người dùng click chọn mục "mở tài liệu" Private Sub mnuOpen_Click() Dim TenFile As String dlgMain.Filter = "Tất cả các file văn bản |*.rtf;*.txt|Tất cả các file|*.*|" dlgMain.ShowOpen TenFile = dlgMain.FileName Dim FormMoi As New frmDocument '///Tạo 1 thể hiện mới của frmDocument FormMoi.Caption = TenFile '/// Đặt caption là tên của file vừa mở FormMoi.rtfNoiDung.LoadFile TenFile '/// Nạp file đó vào điều khiển Richtext End Sub '----------------------------------------------------------------------------------------------------------------------------- '/// Lưu nội dung trong Richtext của của form đang kích hoạt ra file Private Sub mnuSave_Click() Dim TenFile As String Dim FormDangSoanThao As frmDocument '/// Khai báo biến Form dlgMain.Filter = "Tất cả các file văn bản|*.txt|File RTF|*.rtf|Tất cả các file|*.*|" dlgMain.ShowSave TenFile = dlgMain.FileName Set FormDangSoanThao=ActiveForm '///Gán biến file cho form đang kích hoạt FormDangSoanThao.rtfNoiDung.SaveFile TenFile, rtfRTF '/// Lưu ra file FormDangSoanThao.Caption = TenFile '/// Cập nhật lại tiêu đề của form End Sub d. Ghi chú • Trong khi chương trình đang chạy, nếu muốn tạo ra một form mới có đầy đủ tính chất như một form đã có thì sử dụng từ khoá : Dim As New , như ví dụ ở trên. Ngoài ra còn có một cách khác, ví dụ: Dim F As frmDocument Set F = New frmDocument • Trong trường hợp một ứng dụng có nhiều form cùng tồn tại thì ActiveForm sẽ trả về (trỏ tới) form đang được kích hoạt. • Có thể thay đổi màu nền của form MDI bằng cách đặt lại thuộc tính BackColor, hay cũng có thể đặt vào đó một file ảnh qua thuộc tính picture. • Muốn một form ở dạng MDIChild thì đặt thuộc tính MDIChild = True. • Nếu form con có hệ thống menu thì menu của form MDI sẽ bị ẩn đi. • Nếu các form đã được đóng hết và người dùng click chọn mục "Lưu file ra đĩa" thì sẽ có lỗi xuất hiện. Ở đây có 2 giải pháp : thứ nhất là "Disable" mục này. thứ hai là cần kiểm tra giá trị trả về từ hàm ActiveForm. Nếu giá trị này là Nothing thì thoát ngay, cụ thể là: If ActiveForm Is Nothing Then Exit Sub Bài 5 a. Thiết kế giao diện Hệ thống giao diện giống như bài tập 4, nhưng thêm thanh công cụ (Toolbar) và đối tượng chứa ảnh ImageList. (Tên của các điều khiển được in đậm bên cạnh) 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 89 Hình 3.15 – Giao diện form MDI và đặt tên cho các điều khiển Lưu ý: Thanh công cụ nằm trong thư viện: Microsoft Window Common Control 6.0 Tiếp theo, cần đặt thuộc tính cho 2 điều khiển ImageList và Toolbar như sau: b1. Mở trang Property (click chuột phải và chọn Properties) của điều khiển ImageList như trong hình 16. Hình 3.16 - Chọn kích thước Icon là 16x16 cho ImageList Hình 3.17 – Chèn và đặt tên cho các biểu tượng của ImageList - Các biểu tượng ở đây chỉ mang ý nghĩa minh hoạ cho sinh động, thực tế bạn có thể chọn các biểu tượng khác theo sở thích. - Các biểu tượng nên được đặt tên, như trong bài tập này, 3 biểu tượng ở trên có các tên (Key) lần lượt là icoBold, icoItalic, icoUnderline. Khi đặt tên thì về sau ta có thuộc tính Key chính là tê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 90 thể tham chiếu tới nó thông qua tên này. Cũng xin nói thêm ở đây là việc đặt tên bằng chữ thường và chữ HOA là quan trọng. B2. Thêm các nút vào Toolbar và thiết lập các thông số. Hình 3.19 - Gắn kết Toolbar với điều khiển ImageList Hình 3.20 – Thêm các nút vào Toolbar và đặt thuộc tính cho mỗi nút b. Hướng dẫn: Phần viết lệnh trong bài tập này tương tự như bài tập trước, tuy nhiên còn phải chèn thêm vào các sự kiện Click chọn trên thanh công cụ. Khi người dùng click một nút trên thanh công cụ thì sự kiện ButtonClick sẽ xuất hiện. c. Chương trình mẫu frmDocument.frm '/// Khi người dùng kéo giãn Form thì đặt lại kích thước của Richtext bằng với Form Private Sub Form_Resize() rtfNoiDung.Top = 0 rtfNoiDung.Left = 0 rtfNoiDung.Height = Me.ScaleHeight rtfNoiDung.Width = Me.ScaleWidth End Sub Đoạn lệnh sau viết trong Form frmMain: frmMain.frm Dim SoTT As Integer '/// Biến dùng để lưu số lượng Form tạo ra '/// Người dùng click chọn menu : "Tài liệu mới" Private Sub mnuNew_Click() Dim F As New frmDocument '///Tạo một thể hiện mới của frmDocument SoTT = SoTT + 1 F.Caption = "Tài liệu thứ " & SoTT '/// Đặt tiêu đề cho cửa sổ (form) mới F.Show '/// Hiển thị form vừa tạo 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 91 End Sub '----------------------------------------------------------------------------------------------------------------------------- '/// Người dùng click chọn mục "mở tài liệu" Private Sub mnuOpen_Click() Dim TenFile As String dlgMain.Filter = "Tất cả các file văn bản |*.rtf;*.txt|Tất cả các file|*.*|" dlgMain.ShowOpen TenFile = dlgMain.FileName Dim FormMoi As New frmDocument '///Tạo 1 thể hiện mới của frmDocument FormMoi.Caption = TenFile '/// Đặt caption là tên của file vừa mở FormMoi.rtfNoiDung.LoadFile TenFile '/// Nạp file đó vào điều khiển Richtext End Sub '----------------------------------------------------------------------------------------------------------------------------- '/// Lưu nội dung trong Richtext của của form đang kích hoạt ra file Private Sub mnuSave_Click() Dim TenFile As String Dim FormDangSoanThao As frmDocument '/// Khai báo biến Form dlgMain.Filter = "Tất cả các file văn bản|*.txt|File RTF|*.rtf|Tất cả các file|*.*|" dlgMain.ShowSave TenFile = dlgMain.FileName Set FormDangSoanThao=ActiveForm '///Gán biến file cho form đang kích hoạt FormDangSoanThao.rtfNoiDung.SaveFile TenFile, rtfRTF '/// Lưu ra file FormDangSoanThao.Caption = TenFile '/// Cập nhật lại tiêu đề của form End Sub '///--------------------------------------------------------------------------------------------------------------------------- '/// Sự kiện này được kích hoạt khi người dùng click một nút trên thanh Toolbar '/// Khi chọn định dạng đậm, nghiêng, gạch chân thì đảo lại giá trị trước đó (sử dụng phép NOT) '///--------------------------------------------------------------------------------------------------------------------------- Private Sub tbrMain_ButtonClick(ByVal Button As MSComctlLib.Button) Dim F As frmDocument Set F = ActiveForm '/// Trỏ đến Form đang được kích hoạt Select Case Button.Key Case "cmdBold" F.rtfNoiDung.Font.Bold = Not F.rtfNoiDung.Font.Bold If F.rtfNoiDung.Font.Bold = True Then Button.Value = tbrPressed If F.rtfNoiDung.Font.Bold = False Then Button.Value = tbrUnpressed Case "cmdItalic" F.rtfNoiDung.Font.Italic = Not F.rtfNoiDung.Font.Italic If F.rtfNoiDung.Font.Italic = True Then Button.Value = tbrPressed If F.rtfNoiDung.Font.Italic = False Then Button.Value = tbrUnpressed Case "cmdUnderline" F.rtfNoiDung.Font.Underline = Not F.rtfNoiDung.Font.Underline Button.Value=IIf(F.rtfNoiDung.Font.Underline=True, tbrPressed, tbrUnpressed) End Select 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 92 d. Ghi chú • Khi sự kiện ButtonClick xảy ra thì ta có thể kiểm tra và biết được nút nào đã dược nhấn (chọn) thông qua tham số là Button. ngoài ra, ta cũng có thể cần phải thay đổi luôn trạng thái của nút vừa được nhấn như các nút B, I, U. Khi đó ta chỉ cần thay đổi thuộc tính Value của Button thành tbrPressed (trạng thái nhấn = nút chìm) và tbrUnPressed (trạng thái không nhấn = nút nổi). • Hàm iif(, , ) là một hàm rất hay và ngắn gọn, hàm này sẽ trả về giá trị là GT1 hoặc GT2 tuỳ vào Biểu thức L là true hay False. Nếu Biểu thức logic L là true thì trả về GT1, trái lại trả về GT2. Bài 6 a. Thiết kế giao diện. Giống như bài số 5, nhưng thêm điều khiển Statusbar (tên là staMain) với thuộc tính được thiết lập như hình 21 dưới đây: Hình 3.21 – Đặt thuộc tính cho điều khiển StatusBar Trong đó: Cần tạo ra 3 ô (Panel). Mỗi Panel có thuộc tính Style tương ứng là N1, N2, N3 như chỉ dẫn trong hình 21. b. Hướng dẫn: Viết lệnh trong thủ tục sự kiện Change của Richtext, sau đó đặt nội dung vào panel đầu tiên của thanh trạng thái theo cú pháp: staMain.Panels(1).Text c. Chương trình mẫu: Như bài tập 5 nhưng chèn thêm sự kiện (đoạn lệnh) sau : d. Ghi chú: • Panel đầu tiên trong thanh trạng thái có chỉ số là 1 • Có thể mở rộng chương trình để trạng thái của các nút nhấn sẽ thay đổi tương ứng với định dạng văn bản tại vị trí con trỏ. Các lệnh sau đây minh hoạ điều này. (Chú ý: Đặt trong thủ tục sự kiện KeyUp của điều khiển Richtext): Dim F As frmDocument Set F = frmMain.ActiveForm If F.rtfNoiDung.SelBold=True Then F.tbrMain.Buttons("cmdBold").Value=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 93 If F.rtfNoiDung.SelBold=false Then F.tbrMain.Buttons("cmdBold").Value=0 …………… (Giá trị 1 có nghĩa là nút được ấn – Chìm), 0 = không nhấn (nổi)) Dưới đây là kết quả minh hoạ khi chạy chương trình ! Hình 3.22 - Kết quả chạy chương trình Qui tắc vàng : • Luôn luôn tham khảo và đọc thêm tài liệu trợ giúp trực tuyến MSDN, Internet • Hãy thử đặt các giá trị khác nhau cho các thuộc tính và chạy để kiểm nghiệm. • Luôn luôn tìm mọi cách và phương thức khác nhau để giải các bài toán. • Luôn suy nghĩ và tìm ra các ý tưởng, rồi lập trình thử nghiệm trên máy tính. • Luôn phải quan niệm rằng: Kiến thức viết trong một cuốn sách chỉ mang ý nghĩa dẫn dắt ta làm các bước làm cơ bản. Kiến thức sâu sắc nhất đó chính là từ thực tiễn ta làm !. • Không nên chỉ học những gì sách vở, thầy cô giáo dạy mà hãy chủ động tìm tòi, tự viết những phần mềm mà mình yêu thích, vì: "Công việc mà người ta làm tốt nhất là những công việc mà họ thích nhất !" • Rút ra kiến thức từ những lần thử nghiệm đó. • VÀ hãy luôn học hỏi từ những người xung quanh …. • ….. Nhưng rồi cũng phải có lúc thư giãn ☺

Các file đính kèm theo tài liệu này:

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