Môn học: Kỹ thuật lập trình trên Windows
Cung cấp kỹ năng cơ bản trong lập trình trên 
Windows:
 Lập trình giao diện đồ họa – người dùng (GUI)
 Lập trình cơ sở dữ liệu
 Sử dụng ActiveX, Component
Hiểu biết về công nghệ lập trình của Microsoft 
(Visual Basic, Visual C++, Visual C#, .NET)
Ngôn ngữ minh họa cụ thể: Visual Basic (Version 
6.0, 8.0 (2005), 9.0 (2008))
              
                                            
                                
            
 
            
                 84 trang
84 trang | 
Chia sẻ: Mr Hưng | Lượt xem: 970 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang nội dung tài liệu Lập trình Windows Visual Basic, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
uốn cho User dùng Alt key để sử dụng 
Menu, đ|nh thêm dấu & trước ký tự muốn trong 
menu Caption. Thí dụ Alt-F sẽ thả xuống Menu của 
Menu Command File. 
PNH-HUT220
9/14/2011
56
8.1. Menu
Sử dụng Menu Editor:
Nếu đặt cho MenuItem &Open tên mnuOpen, thì 
khi Click lên Caption nó trên Form trong lúc thiết 
kế, VB6 IDE sẽ hiển thị c|i vỏ của Sub 
mnuOpen_Click(), giống như 
Sub cmdButton_Click() của một CommandButton: 
PNH-HUT221
8.1. Menu
Sử dụng Menu Editor:
C|i gạch ngang giữa MenuItems Close v{ Exit được 
gọi l{ Menu Separator. Có thể tạo một Menu 
Separator bằng c|ch cho Caption nó bằng dấu trừ ( 
- ). 
PNH-HUT222
8.1. Menu
Sử dụng Menu Editor:
Có thể dùng Short Key để tạo phím tắt cho một 
mục menu (ở mức con)
PNH-HUT223
8.1. Menu
Sử dụng Menu Editor:
 Mặc định, c|c menuItem được Enabled v{ Visible. Lúc 
thiết kế có thể cho MenuItem gi| trị khởi đầu của 
Enabled v{ Visible bằng c|ch dùng Check boxes Enabled 
và Visible. 
 Trong khi chạy program (at runtime), cũng có thể thay 
đổi c|c values Enabled v{ Visible như sau: 
mnuSave.Enabled = False 
mnuOpen.Visible = False
 Khi một MenuItem có Enabled=False thì nó bị mờ v{ 
user không dùng được. 
PNH-HUT224
9/14/2011
57
8.1. Menu
Sử dụng Menu Editor:
 Dùng c|c dấu mũi tên chỉ lên v{ xuống để di chuyển 
MenuItem đã được chọn lên v{ xuống 
 Trong danh sách các MenuItems. Dùng button Delete để 
hủy bỏ MenuItem đã được selected, 
 Insert để nhét một MenuItem mới ngay trên MenuItem 
đã được selected v{ Next để chọn MenuItem ngay dưới 
MenuItem đã được selected. 
PNH-HUT225
8.1. Menu – Popup menu
Menu |p dụng cho đúng tình huống (Context 
menu) bằng một Mouse click (thường l{ chuột 
phải).
Pop-Up menu thật ra l{ Drop-down menu của một 
Menu Bar Command. Bình thường Menu Bar 
Command ấy có thể visible hay invisible (t{ng
hình). 
PNH-HUT226
8.1. Menu – Popup menu
PNH-HUT227
8.1. Menu – Popup menu
Code l{m cho Popup menu hiện lên được viết 
trong Event Mousedown của một Object. Ví dụ của 
sự kiện chuột phải lên Form:
PNH-HUT228
9/14/2011
58
8.2. Hộp thoại
Hộp thoại (Dialog Box): L{ một trong những c|ch 
thức VB giao tiếp với người dùng.
Có 4 loại hộp thoại:
 Hộp thông điệp (Message Box)
 Hộp nhập (Input Box)
 C|c hộp thoại thông dụng (Common Dialog)
 Hộp thoại hiệu chỉnh (Custom Dialog)
Hộp thông điệp: Có 2 loại
 Loại chỉ xuất thông b|o
 Loại có tương t|c với người dùng (Nút phản hồi)
PNH-HUT229
8.2.1. Hộp thông điệp 
Message Box
PNH-HUT230
8.2.1. Hộp thông điệp – loại 1
Loại chỉ xuất thông b|o, dùng MsgBox như một thủ 
tục.
Cú pháp: MsgBox Prompt, Button, Title. 
Trong đó: 
 Prompt: Chuỗi thông b|o sẽ hiển thị. 
 Button: C|c nút nhấn sẽ được hiển thị trên hộp thông 
báo. 
 Title: Chuỗi hiển thị trên thanh tiêu đề của hộp thông 
báo.
PNH-HUT231
8.2.1. Hộp thông điệp – loại 1
Loại chỉ xuất thông b|o, dùng MsgBox như một thủ 
tục.
Ví dụ:
PNH-HUT232
9/14/2011
59
8.2.1. Hộp thông điệp – loại 1
Tùy theo tham số (button) truyền v{o MsgBox, sẽ 
xuất hiện hộp thoại với những kiểu nút kh|c nhau. 
Constant của c|c icons ta có thể dùng l{ vbCritical, 
vbQuestion, vbExclamation và vbInformation. 
PNH-HUT233
Hằng số Giá trị Ý nghĩa
vbOKOnly 0 Chỉ hiện nút OK
vbOKCancel 1 Hiện 2 nút OK và Cancel
vbAbortRetryIgnore 2 Hiện 3 nút Abort, Retry và Ignore
vbYesNoCancel 3 Hiện 3 nút Yes, No, Cancel
vbYesNo 4 Hiện 2 nút Yes, No
vbRetryCancel 5 Hiện 2 nút Retry, Cancel
8.2.1. Hộp thông điệp – loại 2
Loại tương t|c với người dùng, dùng MsgBox như một 
h{m, khi nút n{o đó trên hộp thông b|o được ấn, sẽ 
trả về gi| trị tương ứng.
Cú pháp: MsgBox (Prompt, Button, Title) As Integer 
PNH-HUT234
Hằng số Giá trị Nút
vbOK 1 OK
vbCancel 2 Cancel
vbAbort 3 Abort
vbRetry 4 Retry
vbIgnore 5 Ignore
vbYes 6 Yes
vbNo 7 No
8.2.1. Hộp thông điệp – loại 2
Ví dụ:
PNH-HUT235
8.2.1. Hộp thông điệp
Có thể hiển thị Text message trong Message Box 
th{nh nhiều dòng bằng c|ch dùng Constant vbCrLf 
(CarriageReturn v{ LineFeed) để đ|nh dấu những 
chỗ ngắt khúc như sau: 
PNH-HUT236
9/14/2011
60
8.2.2. C|c hộp thoại thông dụng
Có 6 loại hộp thoại thông dụng (Common dialog)
 Mở tập tin (Open)
 Lưu tập tin (Save)
 Chọn mầu (Color)
 Chọn font (Font)
 In ấn (Print)
 Trợ giúp (Help)
Khi thiết kế chỉ có một công cụ duy nhất 
(CommonDialog). 
PNH-HUT237
8.2.2. C|c hộp thoại thông dụng
Mở Project/Components/Controls/Microsoft 
Common Dialog Control 6.0 để đưa công cụ n{y 
vào toolbox.
PNH-HUT238
8.2.2. C|c hộp thoại thông dụng
Có 6 dạng Common Dialog, tùy từng Method để qui 
định gọi loại n{o.
PNH-HUT239
Common Dialog Properties
PNH-HUT240
9/14/2011
61
Hộp thoại mở v{ lưu tập tin
Hai hộp thoại n{y có chức năng v{ thể hiện như 
nhau.
Đều hiển thị danh s|ch c|c tập tin, có thể duyệt 
qua c|c ổ đĩa để tìm tập tin.
Chỉ kh|c nhau phần tiêu đề v{ nút ấn
C|c thuộc tính quan trọng:
 Name: tên của common dialog
 Filter: Chuỗi x|c định phần mở rộng của tên tập tin m{ 
hộp thoại có thể mở hay lưu
 FilterIndex: X|c định mặc định loại tập tin n{o được 
chọn (dùng một số nguyên) nếu có nhiều loại phần mở 
rộng của tệp tin được mô tả trong Filter. 
PNH-HUT241
Hộp thoại mở v{ lưu tập tin
C|c thuộc tính quan trọng (tiếp):
 FileName: Trả về tên tập tin sau khi lựa chọn một tệp 
tin n{o đó
 CancelError: Nếu True thì trả về lỗi khi chọn Cancel. 
(Mặc định l{ False).
Phương thức
 ShowOpen: Mở hộp thoại mở tập tin
 ShowSave: Mở hộp loại lưu tập tin
PNH-HUT242
Hộp thoại mở v{ lưu tập tin
Thiết lập thuộc tính khi thiết kế (mở 
properties của common dialog)
PNH-HUT243
Hộp thoại mở v{ lưu tập tin
Thuộc tính Filter lọc tập tin:
Có thể đặt khi thiết kế, hoặc viết lệnh
Ví dụ:
PNH-HUT244
9/14/2011
62
PNH-HUT245
Hộp thoại mở v{ lưu tập tin
Ví dụ: (thực h{nh)
PNH-HUT246
Hộp thoại mở v{ lưu tập tin
Ví dụ: (thực h{nh)
PNH-HUT247
Hộp thoại chọn m{u
Hiện thị bảng m{u có 
sẵn của Windows, cho 
phép chọn m{u hoặc 
thiết lập thêm m{u 
mới.
Dùng phương thức 
ShowColor để hiển thị 
hộp thoại chọn m{u.
Thuộc tính Color trả về 
m{u được chọn.
PNH-HUT248
9/14/2011
63
Hộp thoại chọn m{u
Trong một số ứng dụng, ta sẽ dùng hộp thoại chọn 
m{u để thay đổi gi| trị m{u của c|c điều khiển 
trong một số trường hợp n{o đó. 
Ví dụ (thực h{nh)
PNH-HUT249
Hộp thoại chọn m{u
 txtEdit.SelColor = CommonDialog1.Color
PNH-HUT250
Hộp thoại chọn font chữ
Cho phép người dùng 
chọn font m{n hình, 
m|y in, hoặc cả 2.
Mở hộp thoại chọn 
Font bằng phương 
thức ShowFont
Thuộc tính Flags qui 
định loại font n{o sẽ 
được hiển thị.
PNH-HUT251
Hộp thoại chọn font chữ
C|c thuộc tính:
PNH-HUT252
Thuộc tính Giải thích
Color Lưu giữ giá trị của màu chữ được chọn
FontBold True nếu chọn chữ đậm (Bold), False nếu ngược lại
FontItalic True nếu chọn chữ nghiêng, False nếu ngược lại
FontStrikeThru True nếu chọn chế độ gạch ngang ký tự
FontUnderLine True nếu chọn chế độ gạch chân ký tự
FontName Tên font chữ
Max Kích thước lớn nhất của Font được hiển thị
Min Kích thước nhỏ nhất của Font được hiển thị
FontSize Kích thước của Font được chọn
9/14/2011
64
Hộp thoại chọn font chữ
C|c gi| trị của thuộc tính Flags:
Nếu muốn chọn m{u, thêm 256 v{o gi| trị thuộc 
tính Flags.
Ví dụ chọn Font: (thực h{nh)
PNH-HUT253
Hằng Giá trị Hiệu quả
cdlCFPrinterFonts &H2 Chỉ hiển thị Font máy in
cdlCFScreenFonts &H1 Chỉ hiển thị Font màn hình
cdlCFBoth &H3 Hiển thị cả Font màn hình và máy in
cdlCFScalableOnly &H20000 Hiển thị Font tỷ lệ như là Font True Type
Hộp thoại chọn font chữ
PNH-HUT254
Hộp thoại chọn font chữ
PNH-HUT255
Hộp thoại in ấn
Cho phép x|c lập 
thông tin về m|y in 
khi tiến h{nh in ấn.
Sử dụng phương thức 
ShowPrinter để mở 
hộp thoại in ấn.
PNH-HUT256
9/14/2011
65
Hộp thoại in ấn
C|c thuộc tính:
Ví dụ hộp thoại in ấn (thực h{nh)
PNH-HUT257
Thuộc tính Ý nghĩa
Copies Số bản in
FromPage Số thứ tự của trang bắt đầu in
Max Số bản in tối đa cho phép
Min Số bản in tối thiểu cho phép
PrinterDefault Nếu = True, các thiết lập sẽ ảnh hưởng đến các ứng 
dụng khác có sử dụng máy in.
ToPage Số thứ tự trang in cuối cùng
Hộp thoại in ấn
PNH-HUT258
Hộp thoại in ấn
PNH-HUT259
Hộp thoại trợ giúp
Ta dùng method ShowHelp để hiển thị c|c thông 
tin giúp đỡ, phải cho CommonDialog ít nhất trị số 
của c|c properties HelpFile v{ HelpCommand
PNH-HUT260
9/14/2011
66
B{i thực h{nh tổng hợp
Sử dụng menu v{ hộp thoại (Ứng dụng trình 
soạn thảo văn bản đơn giản)
PNH-HUT261
B{i thực h{nh tổng hợp
Sử dụng menu v{ hộp thoại
PNH-HUT262
B{i thực h{nh tổng hợp
Sử dụng menu v{ hộp thoại
PNH-HUT263
Ghi/Đọc dữ liệu trên file
 Filename l{ tên tập tin (lưu/mở) lấy từ commondlg.FileName
 Ghi: 
 Open filename For Output As #1
 Print #1, txtEdit.Text
 Close #1 
 Đọc:
 Dim s as string
 Open filename For Input As #1
 Do While Not (EOF(1))
Line Input #1, s
txtEdit.Text = txtEdit.Text & s & vbCrLf
 Loop
 Close #1
PNH-HUT264
9/14/2011
67
Resize điều khiển RTB
Khi Form chứa txtEdit thay đổi kích thước 
(resize) xảy ra sự kiện Form_Resize. Đặt lại 
kích thước điều khiển txtEdit bằng kích 
thước form 
txtEdit.Width = ScaleWidth
txtEdit.Height = ScaleHeight
PNH-HUT265
Chương 9
Xử lý tập tin
PNH-HUT266
Nội dung
9.1. C|c kiểu truy cập tập tin
9.2. Tập tin tuần tự
9.3. Tập tin truy xuất ngẫu nhiên
PNH-HUT267
9.1. C|c kiểu truy cập tập tin
Tập tin: một d~y c|c byte trên đĩa. (ký tự, bản ghi, 
số, chuỗi )
Có 3 kiểu truy cập tập tin: tuần tự, ngẫu nhiên, nhị 
phân.
Tuần tự (Sequential): Đọc/ghi c|c tập tin văn bản 
theo c|c chuỗi liên tục.
Ngẫu nhiên (Random): Đọc/ghi tập tin văn bản, 
nhị ph}n có cấu trúc theo c|c mẩu tin có độ d{i cố 
định.
Nhị ph}n (Binary): Đọc/ghi tập tin có cấu trúc thay 
đổi.
PNH-HUT268
9/14/2011
68
9.2. Tập tin tuần tự - Open
Mở tập tin:
 Cú pháp:
Open pathname For [Input | Output | Append] As 
filenumber [Len = buffersize]
 Tham số: 
- Input: Mở tập tin để đọc, tập tin phải tồn tại sẵn, nếu 
không sẽ b|o lỗi.
- Mở tập tin chưa có sẵn với Output, Append sẽ tạo mới 
tập tin v{ mở nó.
- Len: số ký tự trong vùng đệm khi sao chép dữ liệu giữa 
tập tin v{ chương trình.
- Filenumber: số hiệu tập tin được mở (nguyên, từ 1 .. 
511).
PNH-HUT269
9.2. Tập tin tuần tự - Open (tt)
Mở tập tin – Ví dụ:
 Open “C:\TESTFILE" For Output As #1 ' Mở tập 
tin để ghi.
PNH-HUT270
9.2. Tập tin tuần tự - Input
Đọc nội dung tập tin:
 Hàm Input
Cú pháp: Input (number, filenumber) As String
Trả về number ký tự của tập tin có số hiệu được chỉ định 
bởi filenumber
 Lệnh Input
Cú pháp: Input # filenumber, varlist
Đọc nội dung của tập tin v{o c|c biến được chỉ bởi varlist.
Chỉ sử dụng với c|c tập tin được ghi bởi lệnh Write #
 Lệnh: Line Input # filenumber, varname
Đọc nội dung của một dòng trong tập tin tuần tự v{o biến 
chuỗi (varname).
PNH-HUT271
9.2. Tập tin tuần tự - Input (tt)
Đọc nội dung tập tin – Ví dụ:
 Dùng Line Input để đọc từng dòng:
Dim LinesFromFile, NextLine As String
Do Until EOF(1)
Line Input #1, NextLine
LinesFromFile = LinesFromFile + NextLine + 
Chr(13) + Chr(10)
Loop
 Dùng Input để đọc một danh s|ch c|c th{nh phần:
Input #1, name, street, city, state, zip
 Dùng hàm Input để đọc về n ký tự:
LinesFromFile = Input(n, #1)
PNH-HUT272
9/14/2011
69
9.2. Tập tin tuần tự - Write
Ghi dữ liệu lên tập tin: 
 Có 2 c}u lệnh Write # v{ Print #
C}u lệnh Write #
 Cú pháp: Write #filenumber, [outputlist]
 Ghi dữ liệu v{o tập tin tuần tự. Nội dung ghi chứa trong 
danh s|ch biến outputlist, c|c phần tử danh s|ch c|ch 
nhau bởi dấu phẩy. Nếu không có outputlist thì ghi một 
dòng trắng.
PNH-HUT273
9.2. Tập tin tuần tự - Write (tt)
C}u lệnh Print #
 Cú pháp: Print # filenumber, [outputlist]
 Tương tự như lệnh Write nhưng dữ liệu có thể định 
dạng khi ghi lên tập tin.
 Đối số outputlist có thể l{:
[{Spc(n) | Tab[(n)]}] [expression] [charpos]
Trong đó: 
- Spc(n): xen n khoảng trắng v{o tập tin.
- Tab(n): dùng để x|c định cột bắt đầu ghi dữ liệu trong 
vùng ghi với n l{ số thứ tự cột. Dùng Tab không đối số 
để chỉ vị trí bắt đầu của vùng ghi tiếp theo.
- Expression: biểu thức chuỗi hoặc biểu thức số
- Charpos: chỉ định vị trí của ký tự kế tiếp.
PNH-HUT274
9.2. Tập tin tuần tự - Write (tt)
Ghi tập tin – ví dụ:
 Ghi nội dung hộp văn bản (một chuỗi) v{o tập tin:
Print #1, Thebox.text
Print #1, "This is a test" ' Ghi chuỗi v{o tập tin.
Print #1, ' Ghi một dòng trắng v{o tập tin. 
Print #1, "Zone 1"; Tab ; "Zone 2" ' Tạo hai vùng ghi
 Ghi danh s|ch chuỗi, số:
Dim strString as String, intNumber as Integer 
strString = “AnyCharacters”
intNumber = 23456
Write #Filenum, strString, intNumber
PNH-HUT275
9.2. Tập tin tuần tự - Close
Đóng tập tin:
 Cú pháp: Close filenumberlist
Đóng lại c|c tập tin được mở với c|c số hiệu được mô tả 
trong filenumberlist, filenumberlist có dạng sau: 
[[#]filenumber] [, [#]filenumber] . . .
 Ví dụ: Đóng tập tin đ~ mở cho c|c thao t|c trước
Close #1
PNH-HUT276
9/14/2011
70
9.2. Tập tin tuần tự - Thực h{nh
Ví dụ: Thiết kế ứng dụng duyệt v{ đọc nội dung 
tập tin văn bản trên đĩa cứng (B{i thực h{nh)
PNH-HUT277
9.3. Tập tin truy xuất ngẫu nhiên
 Dữ liệu trong tập tin truy xuất ngẫu nhiên có dạng c|c bản 
ghi đồng nhất. (Tương đương kiểu dữ liệu mẩu tin).
 Ví ụ: Kiểu worker tạo mẫu tin 19 bytes gồm 3 trường:
Type worker
LastName As String *10
Tilte As String * 7
Rank As String *2
End Type
 Sau khi định nghĩa kiểu mẩu tin, khai b|o c|c biến m{ ứng 
dụng cần để xử lý 1 tập tin mở để truy cập ngẫu nhiên:
Public Employee as worker
PNH-HUT278
9.3. Tập tin truy xuất ngẫu nhiên - Open
Mở tập tin:
 Cú pháp:
Open pathname [For Random] As filenumber [Len = 
RecLength]
 Tham số:
- For Random: Mặc định nên có thể không viết.
- Filenumber: Số hiệu tập tin được mở
- Kích thước cho một mẩu tin. Nếu nhỏ hơn sẽ g}y lỗi. 
Nếu lớn hơn thì l~ng phí.
PNH-HUT279
9.3. Tập tin truy xuất ngẫu nhiên - Get
Đọc nội dung tập tin – C}u lệnh Get:
 Cú pháp:
Get [#] filenumber, [recnumber], varname
 Đọc nội dung mẩu tin thứ recnumber v{o biến 
varname.
 Mẩu tin đầu tiên của tập tin được tính từ 1.
PNH-HUT280
9/14/2011
71
9.3. Tập tin truy xuất ngẫu nhiên - Put
Ghi dữ liệu lên tập tin – C}u lệnh Put:
 Cú pháp:
Put [#] filenumber, [recnumber], varname
 Ghi mẩu tin thay thế hoặc thêm mới.
 Thay thế: Nếu recnumber <= số mẩu tin hiện tại
 Thêm mới: recnumber = số mẩu tin hiện tại + 1
PNH-HUT281
9.3. Tập tin truy xuất ngẫu nhiên - Close
Đóng tập tin:
 Như với tập tin tuần tự
 Lệnh: Close filenumberlist
 Đóng lại c|c tập tin được mở với c|c số hiệu được mô tả 
trong filenumberlist, filenumberlist có dạng sau: 
[[#]filenumber] [, [#]filenumber]... 
PNH-HUT282
9.3. Tập tin truy xuất ngẫu nhiên – Ví dụ
 Giả sử ta có khai b|o 1 
mẩu tin như sau: 
Type Hanghoa 
MaHang As String * 10 
TenHang As String * 40 
DVTinh As String * 15 
Gia As Double 
End Type 
PNH-HUT283
 Ghi dữ liệu lên tập tin có cấu 
trúc là các mẩu tin như trên 
Dim h As Hanghoa 
h.MaHang = "AM01" 
h.TenHang = "Dau goi Clear" 
h.DVTinh = "Chai" 
h.Gia = 14000# 
Open "E:\Test.dat" For Random As #1 
Len = LenB(h) 
Put #1, 1, h 
Close #1 
9.3. Tập tin truy xuất ngẫu nhiên – Ví dụ
Đọc dữ liệu từ tập tin có cấu trúc như trên:
Dim h As Hanghoa 
Open "E:\Test.dat" For Random As #1 Len = LenB(h) 
Get #1, 1, h 
Close #1 
MsgBox h.MaHang & ": " & h.TenHang & ": " & h.DVTinh & 
": " & Str(h.Gia), , “Thong tin Hang Hoa” 
PNH-HUT284
9/14/2011
72
Chương 10
Chương trình nhiều Form
PNH-HUT285
Nội dung
10.1. Chương trình nhiều Form
10.2. Ứng dụng MDI Form
PNH-HUT286
10.1. Chương trình nhiều Form
Thêm Form v{o ứng dụng:
Project/AddForm
PNH-HUT287
Biến, thủ tục trong chương trình nhiều form
Khai b|o to{n cục để sử dụng trong form 
kh|c. Ví dụ:
 Public V as integer
 Public Sub1()
End Sub
Sử dụng. Ví dụ:
 Form2.v=100 ‘G|n gi| trị 1000 v{o biến V được 
khai báo trong Form2
 Form2.sub1
PNH-HUT288
9/14/2011
73
Truy xuất đối tượng trong Form kh|c
Kèm theo tên Form chứa đối tượng:
Ví dụ: 
 Form2.text1.text=”DurianGroup” 
 Form2.shape.Fillcolor=QBColor(Rnd() * 10)
Từ khóa Me: Từ khóa n{y có dùng để thay 
thế cho tên Form trong c|c c}u lệnh được 
viết trong Form n{y
PNH-HUT289
Qui định Form hiện trước
Chọn menu Project /Project properties
Tab General:
Chọn tên Form 
Startup Object
PNH-HUT290
10.2. Ứng dụng MDIFrom
Kh|i niệm MDI:
 MDI (Multiple Document Interface), giao diện 
có nhiều cửa sổ t{i liệu
 Sử dụng trong hầu hết c|c ứng dụng Microsoft 
Office (Word, Excel, Access, PowerPoint), và các 
ứng dụng kh|c của Window. 
 Biểu mẫu MDI cho phép nhóm nhiều biểu mẫu 
v{ chức năng trong một cửa sổ lớn. 
 MDI phù hợp với c|c ứng dụng cần l{m việc với 
nhiều t{i liệu cùng lúc. 
PNH-HUT291
10.2. Ứng dụng MDIForm
Đặc điểm:
 MDIForm l{ một biểu mẫu chuẩn có những 
điểm đặc biệt kh|c với c|c biểu mẫu thông 
thường.
 Chỉ có thể tạo một MDIForm cho mỗi ứng dụng, 
vì đ}y l{ biểu mẫu cha, chứa c|c biểu mẫu con 
khác. 
PNH-HUT292
9/14/2011
74
10.2. Ứng dụng MDI Form – Đặc điểm
Hầu hết c|c điều khiển sẽ không đặt trực tiếp được 
v{o giao diện MDIForm. 
Được phép:
 Thiết kế menu
 Chứa c|c điều khiển không có thể hiện khi chạy (Timer, 
CommonDialog).
 C|c điều khiển hỗ trợ căn chỉnh Align (PictureBox, 
Toolbar, StatusBar).
Để đặt c|c điều khiển kh|c, hoặc hiển thị ký tự, 
hình ảnh cần dùng điều khiển chứa chúng (thường 
dùng PictureBox). 
PNH-HUT293
10.2. Ứng dụng MDIForm – C|ch tạo
Mở Project/Add MDI Form. Sau khi tạo MDIForm 
th{nh công, dòng n{y sẽ mờ đi, không cho phép 
thêm MDIForm n{o nữa.
Hình ảnh:
PNH-HUT294
Biểu mẫu MDIChild
Một biểu mẫu MDIForm chứa một hoặc nhiều biểu 
mẫu con. Để tạo c|c biểu mẫu con, thêm biểu mẫu 
v{o dự |n v{ thiết lập thuộc tính MDIChild của nó 
gi| trị True.
Khi được thiết lập l{ MDIChild, biểu tượng của 
form trong cửa sổ Project Explorer sẽ thay đổi. 
Mặc định nó l{ form con của MDIForm (mỗi 
project chỉ có một form cha).
PNH-HUT295
Biểu mẫu MDIChild
Form MDI con nằm bên trong MDI cha. Nếu một 
Form MDI con được chọn l{ form khởi động trong 
ứng dụng thì Form MDI cha sẽ được nạp tự động 
v{ hiển thị trước khi hiện form con. C|c thể hiện 
của form MDI con được tạo ra sử dụng từ khóa 
New 
‘Inside the MDIForm module 
Private Sub mnuFileNew_Click() 
Dim frmDoc As New frmDocument 
frmDoc.Show 
End Sub 
PNH-HUT296
9/14/2011
75
Tạo Instance của biểu mẫu
Sử dụng biến đối tượng để tạo ra những bản sao 
của một biểu mẫu. 
Từng bản sao có c|c điều khiển v{ menu như nhau, 
nhưng có những dữ liệu kh|c nhau. Mặc dù 
chương trình cũng như tên biến v{ tên điều khiển 
như nhau, nhưng dữ liệu được chứa ở những nơi 
kh|c nhau trong bộ nhớ.
PNH-HUT297
Tạo danh s|ch cửa sổ
Phương thức Arrange của MDIForm (không có 
trong form thông thường) cung cấp c|c c|ch thức 
sắp xếp c|c form con (MDIChild) trong ứng dụng 
MDI.
C|c kiểu sắp xếp do VB cung cấp:
PNH-HUT298
Giá trị Hằng Mô tả
0 vbCascade Sắp xếp các cửa sổ con theo kiểu thác nước trải từ 
góc trái trên qua góc phải dưới.
1 vbTileHorizontal Dàn đều các cửa sổ con sao cho chúng chia màn 
hình thành những dải ngang.
2 vbTileVertical Dàn đều các cửa sổ con sao cho chúng chia màn 
hình thành những dải dọc.
3 vbArrangeIcons Các cửa sổ con được thu nhỏ thành các biểu 
tượng và xếp thẳng hàng ở đáy cửa sổ cha.
Tạo danh s|ch cửa sổ
Để l{m những điều n{y, cần tạo ra một menu 
Window với 4 lệnh: Tile Horizontally, Tile 
Vertically, Cascade, and Arrange Icons.
Viết code cho mỗi th{nh phần menu:
‘Chọn xếp theo d{n h{ng ngang
Private Sub mnuTileHorizontally_Click()
Arrange vbTileHorizontal
End Sub
‘Chọn xếp theo d{n h{ng dọc
Private Sub mnuTileVertically_Click()
Arrange vbTileVertical
End Sub
PNH-HUT299
Tạo danh s|ch cửa sổ
Viết code cho mỗi th{nh phần menu (tiếp):
‘Chọn xếp theo kiểu th|c nước
Private Sub mnuCascade_Click()
Arrange vbCascade
End Sub
‘Chọn xếp theo kiểu thu nhỏ
Private Sub mnuArrangeIcons_Click()
Arrange vbArrangeIcons
End Sub
PNH-HUT300
9/14/2011
76
10.3. Ứng dụng MDI Notepad
B{i thực h{nh
Tạo mới thể hiện form con:
 Dim frmDoc As New frmDocument 
frmDoc.Show
Tham chiếu đến form con đang kích hoạt 
(ActiveForm):
Me.ActiveForm
PNH-HUT301
Ứng dụng Notepad MDI
Tạo mới thể hiện Form con
PNH-HUT302
Private Sub menuNew_Click()
Dim frmDoc As frmDocument „Ten form con
Static n As Integer „Bien tinh dem so the hien form con
Set frmDoc = New frmDocument
frmDoc.rtbEdit.Text = "" „Chứa rtbEdit
n = n + 1
frmDoc.Caption = "Document" & Format(n)
frmDoc.Show „Hien the hien form con
End Sub
Ứng dụng MDI Notepad
Kiểm tra nếu chưa có Form con n{o được mở
PNH-HUT303
If ActiveForm Is Nothing Then
Set frmDoc = New frmDocument
frmDoc.Caption = "Document 1"
frmDoc.Show
End If
Tham chiếu điều khiển trên form con đang active
Me.ActiveForm.TenDieuKhien
Xuất file văn bản
Filename: Tên file văn bản được mở 
(qua OpenFileDialog)
PNH-HUT304
Open filename For Input As #1
Do While Not (EOF(1))
Line Input #1, s
Me.ActiveForm.rtbEdit.Text = 
Me.ActiveForm.rtbEdit.Text & s & vbCrLf
Loop
Close #1
9/14/2011
77
Đóng c|c Form con
PNH-HUT305
Private Sub menuExit_Click()
Dim frmDoc As Form
'Thoat cac cua so con
For Each frmDoc In Forms
If TypeOf frmDoc Is frmDocument Then
Unload frmDoc
Set frmDoc = Nothing
End If
Next
'Thoat cua so cha
Unload Me
End Sub
Trò chơi Puzzle số
PNH-HUT306
Trò chơi Puzzle số
Di chuyển c|c ô số để được kết quả sắp 
xếp cuối cùng
PNH-HUT307
Chương 11.
Lập trình Cơ sở dữ liệu
PNH-HUT308
9/14/2011
78
CSDL trong ứng dụng quản lý
Mô hình ứng dụng quản lý CSDL
PNH-HUT309
CSDL trong ứng dụng quản lý
C|c th{nh phần: (mô hình 3 lớp)
PNH-HUT310
Kỹ thuật ADODB trong VB6
ADODB (ActiveX Data Object DB)
Sử dụng:
PNH-HUT311
C|c đối tượng trong ADODB
Connection: Quản lý kết nối
Command 
RecordSet
Field
Parameter
PNH-HUT312
9/14/2011
79
Kết nối Data Source
PNH-HUT313
Đối tượng Connection
PNH-HUT314
Đối tượng Connection
PNH-HUT315
Đối tượng Connection
PNH-HUT316
9/14/2011
80
Đối tượng Connection
PNH-HUT317
Đối tượng Connection
PNH-HUT318
Ví dụ Kết nối CSDL
PNH-HUT319
Đóng kết nối
PNH-HUT320
9/14/2011
81
Thao t|c dữ liệu
PNH-HUT321
Minh họa thao t|c dữ liệu
PNH-HUT322
Đối tượng Command
PNH-HUT323
Đối tượng Command
Thực hiện truy vấn Thêm (Insert), Cập nhật 
(Update) tương tự
PNH-HUT324
9/14/2011
82
Đối tượng Command
Thực hiện c}u truy vấn SELECT
PNH-HUT325
„Khai báo đối tượng RecordSet để chứa kết quả
Dim rs As New ADODB.RecordSet
„Khai báo đối tượng Command
Dim cmd As New ADODB.Command
cmd.ActiveConnection = con „Kết nối đang mở
cmd.CommandText = câu truy vấn chọn
cmd.CommandType = adCmdText
„Thực hiện truy vấn
Set rs = cmd.Execute
Đối tượng RecordSet
Thực hiện c}u truy vấn SELECT
PNH-HUT326
„Khai báo đối tượng RecordSet
Dim rs As New ADODB.RecordSet
„Khai báo đối tượng Command
Dim cmd As New ADODB.Command
cmd.ActiveConnection = con „Kết nối đang mở
cmd.CommandText = câu truy vấn chọn
cmd.CommandType = adCmdText
„Thực hiện truy vấn chọn 
rs.Open cmd
C|c phương thức duyệt bản ghi
Về đầu danh 
sách:
 rs.MoveFirst
Về cuối danh 
sách:
 rs.MoveLast
Bản ghi tiếp theo: 
 rs.MoveNext
Bản ghi trước:
 rs.MovePrevious
PNH-HUT327
Đếm số bản ghi:
rs.RecordCount
Di chuyển đến bản ghi 
có chỉ số index
rs.Move(index)
Đọc thông tin c|c trường bản ghi
Đối tượng rs (RecordSet) nắm dữ tập hợp c|c bản 
ghi. Tại mỗi thời điểm, có một bản ghi được chọn.
Lấy thông tin c|c trường dữ liệu của một bản ghi:
 rs.Fields(index) ‘Chỉ số trường tính từ 0
 rs.Fields(“Tên trường”)
 rs!Têntrường
PNH-HUT328
9/14/2011
83
Đối tượng RecordSet
PNH-HUT329
Tiếng Việt trong Visual Basic
PNH-HUT330
Tiếng Việt VB6
Bảng mã ANSI (ACII mở rộng), dùng đủ 8 bit với 
256 ký tự, bao gồm cả 128 kí tự trong m~ ASCII 
chuẩn. C|c kí tự sau l{ c|c phép to|n, c|c chữ có 
dấu v{ c|c kí tự để trang trí.
(Mở công cụ Character Map của Window, chọn 
font Fixedsys, trật tự c|c ký tự hiện ra ấy chính l{ 
bảng m~ ANSI)
VB6 chuẩn hoạt động với bảng m~ ANSI: Ta có 
thể gõ trong môi trường code c|c ký tự HOA có 
dấu sau: À Á Â Ã È É Ê Ì Í Ò Ó Ô Õ Ù Ú Ý kèm c|c 
chữ thường.
PNH-HUT331
Tiếng Việt VB6
Môi trường chuẩn VB6 không hỗ trợ tiếng Việt 
Unicode. Người ta thường dùng bảng m~ 1 byte 
của Việt nam để thay thế.
Tiếng Việt cho điều khiển:
 Thiết lập thuộc tính Font: Chọn kiểu Font Việt Nam 1 
byte (.VnTime, .VnTimeH, )
 Sử dụng bộ gõ TCVN3, kiểu gõ Telex
Với môi trường Code: 
* C|c ký tự có dấu phức tạp, ta dùng kèm h{m 
ChrW, ví dụ từ 'lên lớp' : Msgbox "lên l" & 
ChrW(7899) & "p“ 
Dùng Character Map để tr
            Các file đính kèm theo tài liệu này:
 lap_trinh_windows_8476.pdf lap_trinh_windows_8476.pdf