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ổ.
14 trang |
Chia sẻ: oanh_nt | Lượt xem: 1595 | Lượt tải: 0
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:
- pages_from_bai_tap_lap_trinh_vb_dhspkthy_3.pdf