Tải bản đầy đủ (.pdf) (27 trang)

Môn tin học đại cương - Phần 5 pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (278.46 KB, 27 trang )

1
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 218
MÔN TIN HỌC
Chương 9
ĐỊNH NGHĨA THỦ TỤC & SỬ DỤNG
Chương 9 : Định nghĩathủ tục& sử dụng
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 219
Nhắclạicấutrúctổ chức1 chương trình
 Mộtchương trình thường cung cấp nhiềuchứcnăng cho người dùng ⇒
Chương trình thường là 1 hệ thống phứctạp. Để dễ quảnlývàxâydựng
chương trình, ngườitathường chia nó ra nhiều đơnvị nhỏ hơn. Hiệncó2
phương pháp chia nhỏ chương trình :
 phương pháp có cấutrúc
: chương trình đượcchianhỏ thành nhiều
module chứcnăng, mỗi module chứa nhiều điểmnhập (entry), mỗi
điểmnhập cung cấp1 dịch vụ (chứcnăng) rõ ràng, đơngiản nào đó.
Ta gọimỗi điểmnhậplàthủ tụcthựchiệnchứcnăng tương ứng.
 phương pháp hướng đốitượng
: chương trình đượcchianhỏ thành
nhiều đốitượng, mỗi đốitượng chứa nhiều điểmnhập (entry), mỗi
điểmnhập cung cấp1 dịch vụ (chứcnăng) rõ ràng, đơngiản nào đó.
Ta gọimỗi điểmnhậplàthủ tụcthựchiệnchứcnăng tương ứng.
 Tóm lại, dù dùng phương pháp chia nhỏ chương trình nào thì đơnvị chức
năng nhỏ nhấtmàngườilậptrìnhcóthể xây dựng và dùng (gọi) lại nhiều
lần trong chương trình là thủ tục.


Chương 9 : Định nghĩathủ tục& sử dụng
2
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 220
Phân loạithủ tục trong VB
 Nếutaphântíchchương trình theo cấutrúcthìchương trình VB là tậpcác
standard module, trong mỗi module ta có thểđịnh nghĩa n thủ tục khác nhau
thuộc 1 trong 2 dạng :
 thủ tục-Sub
: 1 đoạnlệnh thực thi VB để thựchiện1 chứcnăng rõ ràng,
đơngiảnnhưng không trả về giá trị kèm theo tên thủ tục.
 hàm - Function
: 1 đoạnlệnh thực thi VB để thựchiện1 chứcnăng rõ ràng,
đơngiảnvàtrả về giá trị kèm theo tên hàm.
 Nếutaphântíchchương trình theo hướng đốitượng thì chương trình VB là tập
các form hay class module, trong mỗi module ta có thểđịnh nghĩan thủ tục
khác nhau thuộc 1 trong 3 dạng :
 thủ tục-Sub
: 1 đoạnlệnh thực thi VB để thựchiện1 chứcnăng rõ ràng,
đơngiảnnhưng không trả về giá trị kèm theo tên thủ tục.
 hàm - Function
: 1 đoạnlệnh thực thi VB để thựchiện1 chứcnăng rõ ràng,
đơngiảnvàtrả về giá trị kèm theo tên hàm.
 truy xuấtthuộc tính - Property
: 1 đoạnlệnh thực thi VB để đọc/ghi 1 thuộc
tính tương ứng của đốitượng. Có 3 thủ tụcloại này là Get, Set và Let.
Chương 9 : Định nghĩathủ tục& sử dụng
Khoa Công nghệ Thông tin

Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 221
Tầmvựcsử dụng thủ tục trong VB
 Trong mỗi standard module, ta có thể xác định tầmvựcsử dụng củatừng thủ
tục:
 cụcbộ trong module
: dùng từ khóa Private trong lệnh định nghĩathủ tục.
 toàn cục trong chương trình
: dùng từ khóa Public trong lệnh định nghĩathủ
tục.
 Trong mỗi form hay class module, ta có thể xác định tầmvựcsử dụng củatừng
thủ tục:
 cụcbộ trong module (đốitượng)
: dùng từ khóa Private trong lệnh định nghĩa
thủ tục.
 cụcbộ trong Project
: dùng từ khóa Friend trong lệnh định nghĩathủ tục.
 công cộng (ai dùng cũng được)
: dùng từ khóa Public trong lệnh định nghĩa
thủ tục. Các thủ tụccôngcộng của đốitượng đượcgọi là method để phân
biệtvới Sub/Function.
 Về nguyên tắc, các thủ tục Property Get, Set và Let đềuphảicótầmvực
công cộng (dùng từ khóa Public).
Chương 9 : Định nghĩathủ tục& sử dụng
3
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 222

Cú pháp định nghĩa hàm - Function
 Cú pháp để định nghĩa 1 hàm :
[Public | Private | Friend] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
 Dùng từ khóa Public để định nghĩa hàm có tầmvực toàn cục, nghĩalà
bấtkỳ lệnh nào củachương trình đềucóthể gọi hàm Public.
 Dùng từ khóa Friend để định nghĩa method thuộc 1 class module nhưng
chỉ có tầmvựccụcbộ trong Project, nghĩalàchỉ có các lệnh trong cùng
Project mớicóthể gởi thông điệp đến hàm Friend của đốitượng đó, còn
các lệnh ở ngoài Project thì không thấy hàm Friend của đốitượng này.
Chương 9 : Định nghĩathủ tục& sử dụng
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 223
Cú pháp định nghĩa hàm - Function (tt)
 Dùng từ khóa Private để định nghĩa hàm có tầmvựccụcbộ trong
module, nghĩalàchỉ có các lệnh trong cùng module mớicóthể gọi hàm
Private trong module tương ứng.
 Dùng từ khóa Static để định nghĩa các biếncụcbộ trong hàm đềulà
Static, nghĩalàgiátrị của chúng vẫntồntại qua các lầngọi khác nhau
đếnhàmnày.
 [statements] là danh sách các lệnh định nghĩabiến, hằng, kiểucụcbộ
trong function và các lệnh thực thi miêu tả chính xác chứcnăng của
hàm.

 Lệnh gán name = expression cho phép gán giá trị trả về cho lệnh gọi
hàm.
 Lệnh Exit Function cho phép trả ngay điềukhiểnvề lệnh gọi hàm này
(thay vì thựcthitiếpcáclệnh còn lạicủa hàm).
Chương 9 : Định nghĩathủ tục& sử dụng
4
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 224
Cú pháp định nghĩa hàm - Function (tt)
 arglist là danh sách các tham số hình thức, mỗi tham số đượccách
nhau bởidấu ',' và được định nghĩa theo cú pháp như sau :
[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type]
[=defaultvalue]
 Dùng từ khóa Optional để khai báo rằng tham số tương ứng là nhiệmý
trong lúc gọi hàm : truyền hay không cũng được. Trong trường hợp này
ta nên dùng thêm thành phần[= defaultvalue] để xác định giá trị cần
truyền nhiệmý.
 Dùng từ khóa ByRef để khai báo việctruyền tham số bằng tham khảo,
đây là chếđộtruyềnthamsố nhiệmý. Ngượclại dùng từ khóa ByVal để
khai báo cơ chế truyền tham số bằng giá trị.
 Chỉ có thể dùng từ khóa ParamArray cho tham số cuối trong danh sách
tham số, tham số này cho phép ta truyền bao nhiêu tham số cụ thể cũng
được.
Chương 9 : Định nghĩathủ tục& sử dụng
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 225

Thí dụđịnh nghĩahàm
 Đoạn code sau định nghĩa hàm tính n! giai thừa theo giảithuật đệ qui :
Public Function giaithua(ByVal n As Long) As Long
If n <= 0 Then ' nếun <=0 thìtrả về -1
giaithua = -1
Exit Function
End If
If n = 1 Then ' nếun = 1 thìtrả về kếtquả là 1
giaithua = 1
Exit Function
End If
' Nếu n > 1 thì tính theo công thức n! = n * (n-1)!
giaithua = n * giaithua(n - 1)
End Function
Chương 9 : Định nghĩathủ tục& sử dụng
5
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 226
Cú pháp định nghĩathủ tục-Sub
 Cú pháp để định nghĩa 1 thủ tục Sub :
[Private | Public | Friend] [Static] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
 Ý nghĩacủacáctừ khóa Public, Private, Friend, Static cũng như các
thành phần arglist, Exit Sub, statements giống y như trong việc định
nghĩa hàm mà chúng ta đãgiớithiệu ở những slide trước.

 Sự khác biệtgiữa hàm và thủ tục là hàm luôn trả về giá trị kếthợpvới
tên hàm, còn thủ tục thì không trả về trị kếthợpvớitênthủ tục(nhưng
nó vẫncóthể trả kếtquả về thông qua các tham số truyềnbằng tham
khảo).
 Nếu quan sát kỹ, ta thấy các hàm xử lý sự kiệnchocácđốitượng giao
diện đềulàSub, chứ không phải là Function, do đótừđây ta dùng đoạn
câu "thủ tụcxử lý sự kiện" thay cho "hàm xử lý sự kiện".
Chương 9 : Định nghĩathủ tục& sử dụng
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 227
Cú pháp định nghĩa method Get thuộctínhđốitượng
 Cú pháp để định nghĩa 1 method Get :
[Public | Private | Friend] [Static] Property Get name [(arglist)] [As
type]
[statements]
[name = expression]
[Exit Property]
[statements]
[name = expression]
End Property
 Ý nghĩacủacáctừ khóa Public, Private, Friend, Static cũng như các
thành phần arglist, Exit Property, statements, [name = expression]
giống y như trong lệnh định nghĩa hàm mà chúng ta đãgiớithiệu ở
những slide trước.
 Method Get cho phép bên ngoài có thểđọcgiátrị của 1 thuộc tính bên
trong đốitượng nhưng dướisự kiểm soát của đốitượng đó.
Chương 9 : Định nghĩathủ tục& sử dụng
6

Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 228
Cú pháp định nghĩa method Let thuộctínhđốitượng
 Cú pháp để định nghĩa 1 method Let :
[Public | Private | Friend] [Static] Property Let name ([arglist,] value)
[statements]
[Exit Property]
[statements]
End Property
 Ý nghĩacủacáctừ khóa Public, Private, Friend, Static cũng như các
thành phần arglist, Exit Property, statements giống y như trong lệnh
định nghĩa hàm mà chúng ta đãgiớithiệu ở những slide trước.
 Method Let cho phép bên ngoài có thể gán giá trị mới cho 1 thuộc tính
bên trong đốitượng nhưng dướisự kiểm soát của đốitượng đó.
Chương 9 : Định nghĩathủ tục& sử dụng
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 229
Cú pháp định nghĩa method Set thuộctínhđốitượng
 Cú pháp để định nghĩa 1 method Set :
[Public | Private | Friend] [Static] Property Set name ([arglist,]
reference)
[statements]
[Exit Property]
[statements]
End Property
 ý nghĩacủacáctừ khóa Public, Private, Friend, Static cũng như các

thành phần arglist, Exit Property, statements giống y như trong lệnh
định nghĩa hàm mà chúng ta đãgiớithiệu ở những slide trước.
 Method Set cho phép bên ngoài có thể gán tham khảo cho 1 thuộc tính
bên trong đốitượng nhưng dướisự kiểm soát của đốitượng đó.
 Sự khác biệtgiữa method Let và Set là Let gán giá trị thuộc1 kiểucổ
điển, còn Set gán tham khảo vào 1 thuộctínhcókiểulàclass đốitượng.
Chương 9 : Định nghĩathủ tục& sử dụng
7
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 230
Gọithủ tục
 Sau khi thủ tục đã được định nghĩa, ta có thể sử dụng (gọi) nó nhờ lệnh
gọithủ tục. Cú pháp gọithủ tục đã đượcmiêutả trong slide 216 (chương
8). Do Function là dạng thủ tụccótrả về kếtquả kếthợpvới tên hàm
nên lệnh gọi hàm thường được dùng trong 1 biểuthức(lệnh gọi hàm là
biểuthứccơ bản để cấu thành biểuthứcphứctạphơn).
 Thí dụ, giả sử ta đã định nghĩa hàm tính n! tên là giaithua(n) thì ta có thể
gọinónhư sau :
n = 8
MsgBox (n & "! = " & giaithua(n))
 Thí dụ, giả sử ta đã định nghĩathủ tục hoán vị 2 số nguyên tên là
Hoanvi(a,b) thì ta có thể gọinónhư sau :
n = 8
m = 4
Call Hoanvi (n,m) ' hoặc Hoanvi n,m
' Lúc này n = 8 và m = 4
Chương 9 : Định nghĩathủ tục& sử dụng
Khoa Công nghệ Thông tin

Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 231
Cơ chế truyềnthamsố
 Các tham số trong lệnh định nghĩathủ tục đượcgọi là tham số hình
thức. Các tham số (thường là biểuthức) trong lệnh gọithủ tục đượcgọi
là tham số thực. Nguyên tắcgọithủ tụclà:
 số lượng các tham số thựcphảibằng số lượng các tham số hình
thức.
 và kiểucủatừng tham số thựctronglệnh gọithủ tụcphảitrùng
(hay tương thích) vớikiểucủathamsố hình thứctương ứng
trong lệnh định nghĩathủ tục.
 Lệnh gọithủ tụcsẽ truyền tham số thực trong lệnh gọichothủ tụcrồi
khởi động thủ tụcchạy để xử lý tham số thựcvừanhận được. Theo thời
gian, thủ tụcsẽ đượcgọi nhiềulần, mỗilầnvới danh sách tham số thực
cụ thể.
 Có 2 cơ chế truyềnthamsố cho thủ tụctạithời điểmgọithủ tục : truyền
giá trị (nội dung của tham số) hay truyền tham khảo(địachỉ -vị trí bộ
nhớ của tham số). Mỗicơ chế truyền tham số có tính chất riêng mà ta sẽ
trình bày kỹ trong các slide kế tiếp:
Chương 9 : Định nghĩathủ tục& sử dụng
8
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 232
Cơ chế truyềnthamsố (tt)
 Dùng từ khóa ByVal kếthợpvới tham số hình thức để khai báo nó được
truyềnbằng giá trị. Khi gọithủ tục, giá trị củathamsố thực sẽ được
truyềnchothủ tụccầnthựcthi. Nhờ cách truyền tham số này mà thủ tục

cầnthựcthisẽ không thể truy xuấtdữ liệucủathủ tụcgọi. Tuy nhiên
cách truyềnbằng giá trị chỉ thích hợp cho các tham số IN (truyềntừ
phầntử gọi đếnthủ tụccầngọi) có kiểuvôhướng (scalar).
 Để truyềnhiệuquả tham số có nội dung chiếmnhiềuô nhớ hay để nhận
kếtquả ta sẽ phải dùng cơ chế truyềnbằng tham khảo(địachỉ). Để định
nghĩathamsố hình thức đượctruyềnbằng tham khảo, ta dùng từ khóa
ByRef kếthợpvới tham số hình thức đó. Khi gọithủ tục, địachỉ của
tham số thực sẽ đượctruyềnchothủ tụccầnthựcthi. Với đặc điểm này,
tham số thựcphảilàbiếnchứ không thể là biểuthức.
 Lưuý rằng nếu ta không dùng từ khóa ByRef hay ByVal kếthợpvới
tham số hình thức thì default nó đượctruyềnbằng tham khảo.
Chương 9 : Định nghĩathủ tục& sử dụng
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 233
// version truyềnbằng giá trị
Private Sub Hoanvi1(ByVal x As Integer, ByVal y As Integer)
Dim tmp As Integer
tmp = x
x = y
y = tmp
End Sub
// version truyềnbằng tham khảo
Private Sub Hoanvi2(ByRef x As Integer, ByRef y As Integer)
Dim tmp As Integer
tmp = x
x = y
y = tmp
End Sub

// version truyềnbằng tham khảo
Private Sub Hoanvi3(x As Integer, y As Integer)
Dim tmp As Integer
tmp = x
x = y
y = tmp
End Sub
Cơ chế truyềnthamsố (tt)
Chương 9 : Định nghĩathủ tục& sử dụng
9
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 234
Hãy khảosátkỹ 3 thủ tục hoán vị dữ liệu trong slide trước. Bây giờ hãy chú
ý tớiviệcsử dụng chúng và kếtquảđạt được:

Dim intN As Integer
Dim intM As Integer
intN = 4
intM = 8
Call Hoanvi1(intN, intM) ' kếtquả intN = 4 và intM = 8 (không đổi)
Call Hoanvi2(intN, intM) ' kếtquả intN = 8 và intM = 4 (đã hoán vị được)
Call Hoanvi3(intN, intM) ' kếtquả intN = 4 và intM = 8 (đã hoán vị được)

Cơ chế truyềnthamsố (tt)
Chương 9 : Định nghĩathủ tục& sử dụng
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học

Slide 235
Các thủ tục định sẵncủaVB
 Về nguyên tắc, ngườilập trình phải định nghĩathủ tục (Sub, Function,
Property) trướckhicóthể sử dụng lại(gọi) nó. Tuy nhiên, VB đã định
nghĩarất nhiềuthủ tụcdạng Sub, Function để thựchiệncácchứcnăng
rấtphổ biến, ngườilậptrìnhcóthể gọi chúng bấtcứ khi nào cầnthiết. Ta
gọicácthủ tục này là các thủ tục định sẵncủa VB.
 Nếuchưa đòi hỏi độ chính xác cao, ngườitacòngọicácthủ tục định
sẵncủa VB là các lệnh thựcthi.
 Sau đây ta chúng ta hãy làm quen với1 số thủ tụcthường dùng.
Chương 9 : Định nghĩathủ tục& sử dụng
10
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 236
Hàm hiểnthị form thông báo
 Cú pháp MsgBox(prompt [, buttons] [, title] [, helpfile, context])
trong đó:
 prompt là biểuthứcchuỗimiêutả thông báo cầnhiểnthị.
 buttons là biểuthứcsố miêu tả số lượng và loại button đượchiểnthị
trong thông báo, nhiệm ý là 0 nghĩalàchỉ có button Ok đượchiểnthị.
 title là biểuthứcchuỗimiêutả title bar của form thông báo.
 helpfile là biểuthứcchuỗimiêutảđường dẫn file Help được dùng với
form thông báo (theo cơ chế context-sensitive Help).
 context là biểuthứcsố miêu tả chỉ số của "topic" cần dùng trong file
Help
 Thường để gọidễ dàng hàm MsgBox, ta chỉ cầnmiêutả tham số
prompt bắtbuộc.
Chương 9 : Định nghĩathủ tục& sử dụng

Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 237
Hàm hiểnthị form nhậpliệu(dạng chuỗi)
 Cú pháp InputBox (prompt [,title] [,default] [,xpos] [,ypos]
[,helpfile,context])
trong đó:
 prompt, title, helpfile, context là các tham số với ý nghĩay như trong
hàm MsgBox.
 xpos, ypos là biểuthứcsố miêu tả tọa độ (x,y) của điểm trên trái của
form thông báo trong màn hình. Nếu không được khai báo, form
thông báo sẽ đượcchỉnh vị trí tựđộng (giữa màn hình).
 default là biểuthứcchuỗimiêutả giá trị default củachuỗi đượcnhập.
 Thường để gọidễ dàng hàm InputBox, ta chỉ cầnmiêutả tham số
prompt bắtbuộc.
Chương 9 : Định nghĩathủ tục& sử dụng
11
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 238
Hàm chuyển đổikiểu
 VB cung cấp các hàm sau để ta có thể chuyểngiátrị từ kiểu nào đóvề
kiểuxácđịnh :
CBool (expression) : chuyểntrị củabiểuthứcvề kiểu Boolean
CByte (expression) : chuyểntrị củabiểuthứcvề kiểuByte
CCur (expression) : chuyểntrị củabiểuthứcvề kiểu Currency
CDate (expression) : chuyểntrị củabiểuthứcvề kiểuDate
CDbl (expression) : chuyểntrị củabiểuthứcvề kiểu Double

CDec (expression) : chuyểntrị củabiểuthứcvề kiểu Decimal
CInt (expression) : chuyểntrị củabiểuthứcvề kiểu Integer
CLng (expression) : chuyểntrị củabiểuthứcvề kiểu Long
CSng (expression) : chuyểntrị củabiểuthứcvề kiểu Single
CStr (expression) : chuyểntrị củabiểuthứcvề kiểuString
CVar (expression) : chuyểntrị củabiểuthứcvề kiểu Variant
Chương 9 : Định nghĩathủ tục& sử dụng
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 239
Các hàm thư viện liên kết động
 Trong code VB, ngoài việcgọicácthủ tục được định nghĩa trong Project và các
thủ tục định sẵn, ngườilậptrìnhcòncóthể gọi các hàm trong các thư viện liên
kết động.
 1 thư viện liên kết động có dạng *.dll thường đượcxâydựng bằng ngôn ngữ
VC++ và chứa 1 danh sách các hàm dịch vụ. Khi chương trình VB gọi1 hàm
trong file thư viện DLL, file đượcnạpvàobộ nhớ và hàm được liên kếtvàovùng
nhớ củachương trình để chươngtrìnhcóthể gọi được hàm cầngọi. Các hàm
thư việnDLL đượcsử dụng chung cho mọiphầnmềm đang chạy, nghĩalàchỉ
có 1 bản (copy) củahàmthư viện DLL trong bộ nhớ máy tính để phụcvụ cho
mọi ứng dụng gọi nó.
 Ta có thể coi Windows như 1 thư việnphầnmềm DLL lớn, thư viện này cung
cấprất nhiều hàm dịch vụ khác nhau, ngườitagọicáchàmnàylàcáchàmAPI
(Application Programming Interface). Chương trình VB có thể gọibấtkỳ hàm
nào trong thư việnnàytheocơ chế liên kết động nhưđã trình bày ở trên.
 Trước khi 1 hàm DLL được dùng trong module VB nào đó, ta cần khai báo đặc
tả hàm DLL này nhờ lệnh Declare của VB với cú pháp được trình bày trong
slide 153 (chương 6).
Chương 9 : Định nghĩathủ tục& sử dụng

12
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 240
MÔN TIN HỌC
Chương 10
TƯƠNG TÁC GIỮA NGƯỜI DÙNG
& CHƯƠNG TRÌNH
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 241
Tổng quát về tương tác giữangười dùng & chương trình
 Trong lúc chương trình chạy, nó thường tương tác vớingười dùng. Sự tương tác
gồm2 hoạt động chính :
 chờ nhậndữ liệu do người dùng cung cấp hay chờ nhậnlệnh
củangười dùng để thực thi 1 chứcnăng nào đó.
 hiểnthị thông báo và/hoặckếtquả tính toán ra màn hình/máy in
để người dùng biếtvàsử dụng.
 Sự tương tác giữangườidùngvàmáytínhđượcthựchiện thông qua các thiếtbị
nhập/xuất(thiếtbị I/O - input/output) như bàn phím/chuột để nhậpdữ liệuhay
lệnh, màn hình/máy in để xuấtkếtquả hay thông báo
 Hiệncóhàngtrăm hãng khác nhau chế tạothiếtbị I/O cho máy PC, mỗi hãng
chế tạorấtnhiều model củacùng1 thiếtbị (thí dụ hãng HP đãchế rất nhiều
model máy in phun mực, máy in laser, ). Mỗi model thiếtbị củatừng hãng có
những tính chấtvật lý riêng và khác với các model khác.
 Để giúp ngườilậptrìnhtruyxuấtcácthiếtbị I/O dễ dàng, độclậpvớitínhchất
phầncứng củathiếtbị, HĐH Windows và VB đãchedấumọitínhchấtphần

cứng củacácthiếtbị và cung cấp cho ngườilập trình 1 giao tiếpsử dụng duy
nhất, độclậpvớithiếtbị.
Chương 10: Tương tác giữangười dùng & chương trình
13
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 242
Kiếntrúctương tác giữangười dùng & ứng dụng VB
Chương 10: Tương tác giữangười dùng & chương trình
Driver
Keyboard
Driver
Mouse
Driver
Printer
Driver
ViewSonic
Monitor
AnyKey
Keyboard
Logitech
Mouse
HP Laser 5
Screen Object
Keyboard
Mouse
Windows
My Visual Basic Application
Ứng dụng giao tiếp

vớI các thiết bị trừu
tượng thông qua
Windows
Windows tạo &
quản lý các thiết
bị trừu tượng
Windows giao tiếp
vớI ác device
driver thiết bị
Các driver giao
tiếp vớI các thiết
bị vật lý
Printer Object
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 243
Kiếntrúctương tác giữangườidùng& ứng dụng VB (tt)
 Xem hình vẽ của slide trước(miêutả kiếntrúctương tác giữangười dùng & ứng
dụng VB), ta thấy:
 cấpthấpnhấtlàcácthiếtbị phầncứng, mỗithiếtbị có tính chất riêng và
khác vớicácthiếtbị khác (ngay cả cùng loại, cùng hãng nhưng khác model).
 cấp device driver điềukhiểnvàgiaotiếptrựctiếpvớiphầncứng nhưng che
dấumọi tính chấtchi tiếtcủaphầncứng, nó cung cấpchocấp trên 1 giao tiếp
sử dụng phầncứng độclậpvới tính chấtphầncứng đó ⇒ Mỗi model thiếtbị
phầncứng của 1 hãng cần có device driver riêng.
 cấp HĐH xử lý các chứcnăng luậnlý(đệmdữ liệu, xử lý sai, ) trước khi nhờ
device driver giao tiếptrựctiếpvớiphầncứng. Windows che dấucácloại
phầncứng và tạoranhững thiếtbị trừutượng để ứng dụng truy xuất chúng dễ
dàng và độclậpvớiloạithiếtbị (đốitượng Printer, Screen, Mouse, Keyboard).

 VB tạoranhững đốitượng giao diện cao cấpvàdễ dùng : mỗi đốitượng
giao diện (form, window, listbox, ) đềucóthể giao tiếptrựctiếpvớingười
dùng để nhập/xuấtdữ liệu, chờ nhậnsự kiệnhay chủđộng thông báo cho
user.
Chương 10: Tương tác giữangười dùng & chương trình
14
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 244
Kiếntrúctương tác giữangườidùng& ứng dụng VB (tt)
 Sau khi đãbiếtkiếntrúcgiaotiếpI/O của ứng dụng VB, khi cầngiaotiếpvới
người dùng, ta nên :
 dùng các đốitượng giao diệncaocấp(định sẵncủa VB hay ActiveX
Control).
 trong 1 số trường hợpcầnthiếttasẽ dùng các đốitượng của Windows như
Printer và Screen.
 trong 1 số trường hợptốicầnthiếttamớigọi các hàm trong giao tiếpcủa
device driver.
 và tuyệt đối không nên truy xuấttrựctiếpphầncứng thiếtbị I/O vì rấtkhó
khăn, không an toàn, dễ bị tranh chấpvớicácứng dụng chạy đồng thời.
 Tương tác vớingười dùng thông qua các đốitượng giao diện đượcthựchiệnnhư
sau :
 nhậpliệu/nhậnlệnh thông qua các thủ tụcxử lý sự kiệncủaphầntử giao
diệntương ứng.
 xuấtkếtquả/thông báo bằng cách gán kếtquả vào thuộc tính tương ứng của
đốitượng giao diện hay dùng các method vẽđồhọatổng quát.
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học
Slide 245
Giao tiếpvới keyboard thông qua các đốitượng giao diện
 Mặcdùcóthể có nhiềuphầntử giao diện cùng đượchiểnthị trênmànhìnhtại
từng thởi điểmnhưng chỉ có 1 phầntử giao diện đượcgiaotiếpvớithiếtbị I/O, ta
gọiphầntử giao diệnnàylà'active' hay được'focus'.
 Liên quan đếnviệc ấnthả 1 phím, VB sẽ tạora3 sự kiệnsauđây và gởivề cho
phầntửđược 'focus' hiện hành :
 KeyDown : sự kiệnxảyrakhingườisử dụng bấm(ấnxuống) bấtkỳ một
phím nào trên bàn phím.
 KeyUp : sự kiệnxảy ra khi ngườisử dụng thả phím vừa ấnra.
 KeyPress: sự kiệnxảy ra khi ngườisử dụng ấn/thả bấtkỳ một phím nào trên
bàn phím mà tạorađược1 kýtự ANSI.
Chương 10: Tương tác giữangười dùng & chương trình
15
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 246
Thủ tụcxử lý sự kiện KeyDown, KeyUp & KeyPress
 Thủ tụccódạng sau :
Private Sub ControlName_KeyDown (KeyCode as Integer, Shift as Integer).
và Private Sub ControlName_KeyUp (KeyCode as Integer, Shift as Integer).
trong đó:
 ControlName là tên của điềukhiểnnhậnsự kiện keydown/keyup.
 KeyCode là mã "virtual code" củaphímđược ấn/thả.
 Shift là giá trị miêu tả trạng thái ấngiữ các phím điềukhiển(làmột dãy bit
với bit 0 cho phím SHIFT, bit 1 cho phím CTRL, bit 2 cho phím ALT).
 Thủ tụcKeyPresscódạng sau :
Private Sub ControlName_KeyPress (KeyAscii As Integer)

trong đó:
 ControlName là tên của điềukhiểnnhậnsự kiệnkeypress.
 KeyAscii là mã ký tự ANSI của phím được ấn/thả.
 Mỗi đốitượng có thủ tụcxử lý biếncố riêng, thủ tụcnàycũng là method của đối
tượng tương ứng.
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 247
Private Sub Text1_KeyDown (KeyCode As Integer, Shift As Integer)
Dim ShiftDown, AltDown, CtrlDown, Txt
ShiftDown = (Shift And vbShiftMask) > 0
AltDown = (Shift And vbAltMask) > 0
CtrlDown = (Shift And vbCtrlMask) > 0
If KeyCode = vbKeyF2 Then ' Display key combinations.
If ShiftDown And CtrlDown And AltDown Then
Txt = "SHIFT+CTRL+ALT+F2."
ElseIf ShiftDown And AltDown Then
Txt = "SHIFT+ALT+F2."
ElseIf ShiftDown And CtrlDown Then
Txt = "SHIFT+CTRL+F2."
ElseIf CtrlDown And AltDown Then
Txt = "CTRL+ALT+F2."
ElseIf ShiftDown Then
Txt = "SHIFT+F2."
ElseIf CtrlDown Then
Txt = "CTRL+F2."
ElseIf AltDown Then
Txt = "ALT+F2."

ElseIf SHIFT = 0 Then
Txt = "F2."
End If
Text1.Text = "You pressed " & Txt
End If
End Sub
Thí dụ thủ tụcxử lý biếncố KeyDown của 1 textbox
Chương 10: Tương tác giữangười dùng & chương trình
16
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 248
Dùng thuộc tính KeyPreview
 Thường 1 form giao diện(hộpthoại) chứa nhiều điềukhiển bên trong nó ⇒ Khi
thao tác phím trên 1 điềukhiển trong form thì sự kiệnsẽ gởichođiềukhiểnhay
form ? Để qui định cụ thểđiều này, VB cung cấpthuộc tính KeyPreview cho
form, ta có thể xem/hiệuchỉnh giá trị củanónhờ lệnh gán :
FormName.KeyPreview [= boolean_expr]
trong đó:
 FormName là tên của form liên quan.
 boolean_expr là biểuthứcluậnlýcógiátrị True/False.
 Khi ta gán trị luậnlývàothuộc tính củaform thìnếu:
 trị = True thì form sẽ nhậnvàxử lý biếncố trướcrồimớitới điềukhiển.
 trị = False thì điềukhiểnnhậnvàxử lý biếncố, còn form thì không.
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 249

Giao tiếpvớichuột thông qua các đốitượng giao diện
 Tương tự như bàn phím, khi người dùng thao tác chuột, VB sẽ tạora1 trong5
biếncố sau đây và gởivề cho phầntửđược 'focus' hiện hành :
 MouseMove : sự kiệnxảy ra khi ngườisử dụng di chuyểnchuột.
 MouseDown : sự kiệnxảy ra khi ngườisử dụng ấnbấtkỳ nút nào trên chuột
(tùy loạichuột mà nó có 1/2/3 nút).
 MouseUp : sự kiệnxảy ra khi ngườisử dụng thả nút vừa ấnra.
 Click : sự kiệnxảyrakhingườisử dụng ấnvàthả chuột.
 DblClick : sự kiệnxảyrakhingườisử dụng 'Click' chuột liên tụchailần
trong 1 thờigianđủ nhỏ (do người dùng qui định chung cho môi trường
Windows).
Chương 10: Tương tác giữangười dùng & chương trình
17
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 250
Thủ tụcxử lý sự kiện MouseDown & MouseUp
 Thủ tụccódạng sau :
Private Sub ControlName_MouseDown (Button As Integer, Shift As Integer,
x As Single, y As Single)
và Private Sub ControlName_MouseUp (Button As Integer, Shift As Integer, x
As Single, y As Single)
trong đó:
 ControlName là tên của điềukhiểnnhậnsự kiện MouseDown/MouseUp.
 Button là giá trị miêu tả trạng thái các nút củachuột được ấn/thả (là mộtdãy
các bit với bit 0 cho nút trái, bit 1 cho nút phải và bit 2 cho nút giữa).
 Shift là giá trị miêu tả trạng thái ấngiữ các phím điềukhiển(làmột dãy bit
với bit 0 cho phím SHIFT, bit 1 cho phím CTRL, bit 2 cho phím ALT).
 x, y miêu tả tọa độ (x,y) củavị trí chuột được ấn/thả trên màn hình.

Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 251
Thủ tụcxử lý sự kiệnMouseMove
 Thủ tụccódạng sau :
Private Sub ControlName_MouseMove (Button As Integer, Shift As Integer,
x As Single, y As Single)
trong đó:
 ControlName là tên của điềukhiểnnhậnsự kiện MouseDown/MouseUp.
 Button là giá trị miêu tả trạng thái các nút củachuột được ấn/thả (là mộtdãy
các bit với bit 0 cho nút trái, bit 1 cho nút phải và bit 2 cho nút giữa).
 Shift là giá trị miêu tả trạng thái ấngiữ các phím điềukhiển(làmột dãy bit
với bit 0 cho phím SHIFT, bit 1 cho phím CTRL, bit 2 cho phím ALT).
 x, y miêu tả tọa độ (x,y) củavị trí chuộthiệnhànhtrênmànhình.
Chương 10: Tương tác giữangười dùng & chương trình
18
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 252
Thủ tụcxử lý sự kiện Click & DblClick
 Thủ tụccódạng sau :
Private Sub ControlName_Click ()
và Private Sub ControlName_DblClick ()
trong đó:
 ControlName là tên của điềukhiểnnhậnsự kiện Click/DblClick.
 Thủ tụcxử lý sự kiện Click và DblClick không có tham sốđểxác định vị trí
ấnchuột hay nút chuột nào đã được ấn. Trong trường hợpcần các thông tin

phụ này để xử lý chi li hơn, bạn nên dùng thủ tụcxử lý sự kiện MouseDown
hay MouseUp.
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 253
' biến qui định trạng thái vẽ/không vẽ
Dim PaintNow As Boolean
'Khởi động thông số vẽ
Private Sub Form_Load ()
DrawWidth = 10 ' Use wider brush.
ForeColor = RGB(0, 0, 255) ' Set drawing color.
End Sub
Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As
Single, Y As Single)
PaintNow = True ' Enable painting.
End Sub
Private Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
PaintNow = False ' Disable painting.
End Sub
Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As
Single)
If PaintNow Then
PSet (X, Y) ' Draw a point.
End If
End Sub
Thí dụ thủ tụcxử lý các sự kiệnchuột
Chương 10: Tương tác giữangười dùng & chương trình
19

Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 254
Vẽ vănbảnvàđồ họalênđốitượng giao diện
 Các điềukhiểnthường chứathuộc tính Text, Caption hay Value để cho phép
chương trình truy xuất(đọc/ghi) các thuộc tính này. Tuy nhiên những đốitượng
giao diệnphứchợpnhư Form, PictureBox, Printer có thể hiểnthị nhiềunội dung
chi tiết ở dạng vănbản, đồ họahay ảnh bitmap bấtkỳ. Để hiểnthị các nộidung
này, ta dùng các method sau củacácđốitượng tương ứng :
 Cls : xóa toàn bộ nội dung hiểnthị trước đócủa đốitượng.
 Print : hiểnthị 1 hay nhiềuchuỗivănbản.
 PSet : hiểnthị 1 điểmpixel với1 màuxácđịnh.
 Point : trả về giá trị màu của1 điểmpixel.
 Line : vẽ 1 đoạnthẳng hay 1 hộphìnhchữ nhật.
 Circle : cẽ 1 hình tròn, ellipse hay cung.
 PaintPicture : vẽ 1 ảnh bitmap đãcóvàođốitượng.
 Các slide còn lạidiễntả chi tiết các method trên cùng các thí dụ về việc dùng
chúng.
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 255
Thủ tụcPrint : xuấtchuỗirathiếtbị xuấtluậnlý
 Thủ tụccódạng sau :
[objName.]Print [Spc(n) | Tab(n) | expression charpos]*
trong đó:
 objName là tên của đốitượng nhậnkếtquả vẽ (Printer, Form, PictureBox),
default là form hiện hành.

 Spc(n) qui định n ký tự trống đượcin ra.
 Tab(n) qui định n ký tự Tab đượcin ra, mỗi Tab đưa pointer in qua phảithêm
1 cột(vị trí các cột đượcqui định trước).
 expression là biểuthứcchuỗihay số cầnin.
 charpos qui định vị trí in dữ liệukế tiếp. Nếu charpos = ";" thì dữ liệuin kế
tiếpsẽ đượcin liền ngay. Nếu charpos = "," thì sẽ thêm 1 Tab trướckhiin dữ
liệukế. Nếu không có charpos saucùngthìvị trí in sẽ dờixuống đầudòng
kế tiếp.
 Thông tin về font chữ phải đượcthiếtlậptrướcthủ tục Print thông qua các thuộc
tính sau của đốitượng vẽ : FontName, FontSize, FontItalic, FontBold,
 Nên thiếtlậpthuộc tính CurrentX, CurrentY để qui định rõ ràng vị trí in củamỗi
lệnh Print.
Chương 10: Tương tác giữangười dùng & chương trình
20
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 256
Thí dụ về việc dùng thủ tụcPrint
 Đoạn code sau đây sẽ hiểnthị 3 hàng vănbản trong hộpthoại About Box được
chỉnh giữa:
Const strAbout1 = "Trinh MiniIE"
Const strAbout2 = "Version 1.0"
Const strAbout3 = "Written by : Nguyen Van Hiep"
Private Sub Form_paint()
ScaleMode = vbPixels
' Xác định vị trí để chuỗi strAbout1 nằmgiữahộpthoại
CurrentX = (ScaleWidth - TextWidth(strAbout1)) / 2
CurrentY = 40
Print strAbout1

' Xác định vị trí để chuỗi strAbout2 nằmgiữahộpthoại
CurrentX = (ScaleWidth - TextWidth(strAbout2)) / 2
CurrentY = 60
Print strAbout2
' Xác định vị trí để chuỗi strAbout3 nằmgiữahộpthoại
CurrentX = (ScaleWidth - TextWidth(strAbout3)) / 2
CurrentY = 80
Print strAbout3
End Sub
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 257
Function Format : chỉnh dạng dữ liệutrướckhiin
 Ta thường muốnformat dữ liệusố hay ngày tháng theo yêu cầu riêng trướckhi
in nó ra. VB hỗ trợ chứcnăng này thông qua hàm Format có cú pháp sau :
Format (expression [,format[,firstdayofweek[,firstweekofyear]]])
trong đó:
 expression là biểuthứcsố hay ngày tháng cầnformat.
 format là chuỗikýtựđịnh dạng hay tên gợinhớ miêu tả chuỗi định dạng sẵn
có của VB.
 firstdayofweek và firstweekofyear qui định ngày đầutrongtuầnvàtuần đầu
trong nămcầnchođịnh dạng dữ liệu ngày tháng.
 Mộtsố ký tự thường dùng trong chuỗi định dạng :
0miêutả vị trí ký số, nếusố không hiểnthị hết vùng định đạng
thì thêm số 0 trướcvàsaugiátrị số cho đầyvùngđịnh dạng.
#miêutả vị trí ký số, không in số 0 đitrước và sau giá trị số.
.miêutả vị trí dấungăn đơnvị (qui định bởi locale của Windows)
,miêutả vị trí dấungăn đơnvị ngàn (qui định bởi locale).

- + % ( ) space miêu tả chỉnhxáckýtự tương ứng.
Chương 10: Tương tác giữangười dùng & chương trình
21
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 258
 Thí dụ về chỉnh dạng dữ liệusố :
Format syntax Result
Format(8315.4, "00000.00") 08315.40
Format(8315.4, "#####.##") 8315.4
Format(8315.4, "##,##0.00") 8,315.40
Format(315.4,"$##0.00") $315.40
 Thí dụ về chỉnh dạng dữ liệu ngày tháng :
Format(Now, "m/d/yy") 1/27/93
Format(Now, "dddd, mmmm dd, yyyy") Wednesday, January 27, 1993
Format(Now, "d-mmm") 27-Jan
Format(Now, "mmmm-yy") January-93
Format(Now, "hh:mm AM/PM") 07:18 AM
Format(Now, "h:mm:ss a/p") 7:18:00 a
Format(Now, "d-mmmm h:mm") 3-January 7:18
Thí dụ về hàm Format
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 259
Thủ tụcPSet: vẽđiểmtrênthiếtbị xuấtluậnlý
 Thủ tụccódạng sau :
[objName.]PSet [Step] (x, y), [color]

trong đó:
 objName là tên của đốitượng nhậnkếtquả vẽ (Printer, Form, PictureBox),
default là form hiện hành.
 (x,y) miêu tả tọa độ củavị trí điểmcầnvẽ trên thiếtbị luậnlý. Nếutừ khóa
Step được dùng thì (x,y) là tọa độ tương đốiso vớivị trí hiện hành đượcxác
định bởi2 thuộc tính CurrentX, CurrentY của đốitượng vẽ. Nếutừ khóa Step
không được dùng thì (x,y) là tọa độ so với điểmgốc(0,0).
 color là giá trị kiểu Long miêu tả màu vẽ theo hệ màu RGB (hoặc dùng hàm
QBColor() hoặc dùng hàm RGB(r,g,b) để xác định màu vẽ).
Chương 10: Tương tác giữangười dùng & chương trình
22
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 260
Thủ tụcLine : vẽđoạnthẳng/box trên thiếtbị xuấtluậnlý
 Thủ tụccódạng sau :
[objName.]Line [Step] (x1, y1) - [Step] (x2, y2), [color], [B][F]
trong đó:
 objName là tên của đốitượng nhậnkếtquả vẽ (Printer, Form, PictureBox),
default là form hiện hành.
 (x1,y1) miêu tả tọa độ điểm đầucủa đoạnthẳng cầnvẽ trên đốitượng nhận
kếtquả. Nếutừ khóa Step đượcdùngtrướctọa độ (x1,y1) thì nó là tọa độ
tương đốiso vớivị trí hiện hành đượcxácđịnh bởi2 thuộc tính CurrentX,
CurrentY của đốitượng nhậnkếtquả. Nếutừ khóa Step không đượcdùng
thì (x1,y1) là tọa độ so với điểmgốc(0,0).
 (x2,y2) miêu tả tọa độ điểmcuốicủa đoạnthẳng cầnvẽ. Ý nghĩacủa
(x2,y2) cũng giống như (x1,y1).
 color là giá trị kiểu Long miêu tả màu vẽ theo hệ màu RGB.
 nếu không có thông số B thì thủ tụcLine sẽ vẽđoạnthẳng qua 2 điểm.

 nếucóthôngsố B, thủ tục Line sẽ vẽ hình chữ nhậtmà2 đỉnh chéo được
xác định bởi2 điểm. Trong trường hợp này nếucóthôngsố F, hình chữ nhật
sẽđược tô cùng màu vớimàuvẽ, ngượclạithuộc tính FillColor và FillStyle
của đốitượng nhậnkếtquả sẽ qui định màu đượctô.
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 261
Thủ tụcCircle : vẽ hình tròn/ellipse trên thiếtbị xuấtluậnlý
 Thủ tụccódạng sau :
[objName.]Circle [Step] (x, y), radius, [color, start, end, aspect]
trong đó:
 objName là tên của đốitượng nhậnkếtquả vẽ (Printer, Form, PictureBox),
default là form hiện hành.
 (x,y) miêu tả tọa độ tâm điểmcủa vòng tròn/ellipse/arc cầnvẽ trên đốitượng
nhậnkếtquả. Nếutừ khóa Step được dùng trướctọa độ (x,y) thì (x,y) là tọa
độ tương đốiso vớivị trí hiện hành đượcxácđịnh bởi2 thuộc tính CurrentX,
CurrentY của đốitượng nhậnkếtquả. Nếutừ khóa Step không đượcdùng
thì (x,y) là tọa độ so với điểm(0,0).
 radius miêu tả bán kính.
 color là giá trị kiểu Long miêu tả màu vẽ theo hệ màu RGB.
 start, end miêu tả góc xác định điểm đầuvàcuốicủaarc theođơnvị radian
(default điểm đầulà0 vàđiểmcuốilà2π).
 aspect miêu tả tỉ lệ kích thướcdọc/ngang của ellipse (default là 1 để vẽ
vòng tròn).
Chương 10: Tương tác giữangười dùng & chương trình
23
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học
Slide 262
Các thuộctínhqui định thông số vẽ
 Khi ta gọi các method vẽ PSet, Line, Circle, PaintPicture trên 1 đốitượng vẽ
nào đó (Printer, Form, PictureBox) thì các method này dùng các thuộctínhsau
để qui định thông số vẽ của chúng :
 CurrentX, CurrentY miêu tả tọa độ điểmhiện hành, nó đượcdùnglàmgốc
tọa độ cho các điểmvẽ nếucódùngtừ khóa Step kèm theo điểmvẽđó.
 FillStyle, FillColor xác định mẫutôvàmàutôcácphầntử có diện tích (box,
circle).
 BackColor xác định màu nềncủa đốitượng.
 ForeColor xác định màu để hiểnthị text hay vẽ biên các phầntử (line, box,
circle).
 DrawMode xác định cách thứcvẽ (vbBlackness, vbWhiteness, vbInvert ).
 DrawStyle xác định mẫuvẽ của đường vẽ (line, box, circle).
 DrawWidth xác định độ dày của đường vẽ (line, box, circle).
 Ta có thểđọc/hiệuchỉnh lạigiátrị các thuộctínhtheoyêucầu.
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 263
Chi tiếtvề thuộc tính qui định đơnvị tính kích thước
 Thuộc tính ScaleMode miêu tảđơnvị tính kích thướcvới qui định sau :
Constant Setting Description
vbUser 0 Indicates that one or more of the ScaleHeight,
ScaleWidth, ScaleLeft, and ScaleTop properties
are set to custom values.
vbTwips 1 (Default)Twip (1440 twips per logical inch;
567 twips per logical centimeter).

vbPoints 2 Point (72 points per logical inch).
vbPixels 3 Pixel (smallest unit of monitor or printer resolution).
vbCharacters 4 Character (horizontal = 120 twips per unit;
vertical = 240 twips per unit).
vbInches 5 Inch.
vbMillimeters 6 Millimeter.
vbCentimeters 7 Centimeter.
vbHimetric 8 HiMetric
vbContainerPosition 9 Units used by the control's container to determine
the control's position.
vbContainerSize 10 Units used by the control's container to determine
the control's size.
Chương 10: Tương tác giữangười dùng & chương trình
24
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 264
Chi tiếtvề thuộc tính miêu tả màu
 Mỗimàuở chếđộTrueColor đượctổng hợptừ 3 thành phầnmàucơ bản Red -
Green - Blue. Trọng số củamỗi thành phầnmàuđượcmiêutả bởi1 giátrị Byte
(từ 0 đến255). Xácđịnh 1 màu là xác định 3 thành phầnmàucủanó.
 Các thuộc tính BackColor, ForeColor, FillColor có giá trị miêu tả màu dạng RGB
với qui định sau :
Color Red Value Green Value Blue Value
Black 0 0 0
Blue 0 0 255
Green 0 255 0
Cyan 0 255 255
Red 255 0 0

Magenta 255 0 255
Yellow 255 255 0
White 255 255 255
 Thí dụ ta viếtlệnh gán : Form1.BackColor = RGB(0,0,0) để thiếtlậpmàunền
củaform tênForm1 làmàuđen.
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 265
Chi tiếtvề thuộc tính miêu tả màu (tt)
 Nếuchỉ muốn dùng 1 trong 16 màu cơ bảncủa QBasic (version Basic đầutiên
củaMicrosoft chạy trên DOS), ta có thể dùng hàm QBColor. Bảng sau liệtkê
16 màu cơ bảnnày:
Number Color Number Color
0 Black 8 Gray
1 Blue 9 Light Blue
2 Green 10 Light Green
3 Cyan 11 Light Cyan
4 Red 12 Light Red
5 Magenta 13 Light Magenta
6 Yellow 14 Light Yellow
7 White 15 Bright White
 Thí dụ ta viếtlệnh gán : Form1.BackColor = QBColor(15) để thiếtlậpmàunền
củaform tênForm1 làmàutrắng sáng.
Chương 10: Tương tác giữangười dùng & chương trình
25
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học

Slide 266
Chi tiếtvề thuộctínhmẫutônền
 Thuộc tính FillStyle có giá trị miêu tả 1 mẫutônềnvới qui định sau :
Constant Setting Description
VbFSSolid 0 Solid
VbFSTransparent 1 (Default) Transparent
VbHorizontalLine 2 Horizontal Line
VbVerticalLine 3 Vertical Line
VbUpwardDiagonal 4 Upward Diagonal
VbDownwardDiagonal 5 Downward Diagonal
VbCross 6 Cross
VbDiagonalCross 7 Diagonal Cross
 Thí dụ ta viếtlệnh gán : Form1.FillStyle = VbVerticalLine để thiếtlậpmẫutô
nềncủacácphầntử trong form là các đường thẳng đứng.
Chương 10: Tương tác giữangười dùng & chương trình
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 267
Chi tiếtvề thuộctínhmẫuvẽđường viền
 Thuộc tính DrawStyle có giá trị miêu tả 1 mẫuvẽ đường viềnvớiqui định sau :
Constant Setting Description
VbSolid 0 (Default) Solid
VbDash 1 Dash
VbDot 2 Dot
VbDashDot 3 Dash-Dot
VbDashDotDot 4 Dash-Dot-Dot
VbInvisible 5 Transparent
VbInsideSolid 6 Inside Solid
 Thí dụ ta viếtlệnh gán : Form1.DrawStyle = VbDash để thiếtlậpmẫuvẽđường

viềncủacácphầntử trong form là các đường gạch-gạch dài.
 Lưuý thuộc tính DrawStyle chỉ có nghĩatheobảng trên khi ta thiếtlậpthuộc
tính DrawWidth = 1. Trong trường hợp DrawWidth > 1 thì DrawStyle <> 5 đều
tạoranétvẽ liên tục.
Chương 10: Tương tác giữangười dùng & chương trình

×