Khóa Hàm Th Visual Basic 6.0
Chương Hai- Viết chương trình đầu tiên
Bn đang làm quen vi môi trường trin khai lp trình (Integrated Development
Environment - IDE) ca MS VB6 và rt nóng rut mun viết nhng dòng mã đầu tiên
để chào mng thế gii.Ta th ôn li mt s vn đề mà có l bn đã biết ri. Mt
chương trình Visual Basic gm có phn mã lp trình và các hình nh (visual
components). Bn có th thiết kế phn hình nh bng cách dùng nhng đồ ngh
(Controls hay Objects) t Túi đồ ngh (Toolbox) nm bên trái. Nếu bn không thy
cái Túi đồ ngh thì dùng mnh lnh Menu View|Toolbox để bt nó hin ra.Khi
bn bt đầu thiết kế mt chương trình bng cách chn Standard EXE, môi trường
trin khai lp trình (IDE) cho bn sn mt Form tên là Form1. Bn có th đổi tên
(Name) nó trong cái ca s Propeties nm phía dưới bên phi (trong hình dưới đây
ta edit Name property ca Form1 thành ra frmMainForm). Bn cũng có th sa đề
ta (Title) ca form ra cái gì có ý nghĩa hơn bng cách đổi Caption ca form cũng
trong ca s Propeties (trong hình dưới đây ta edit Caption property ca form thành
ra "Chi tiet cua ban
toi").
Sp đặt các vt dng lên Form
Mun đặt mt Control lên Form, click hình cái Control trong Toolbox ri Drag (bm
nút trái ca con chut ri kéo cho thành hình ch nht trước khi buông nút trái ra)
con chut trên Form v thành c ca Control. Nhng Controls bn s dùng thường
nht t Toolbox là Label (nhãn), Textbox (hp để đánh ch vào) và CommandButton
(nút bm mnh lnh).
Trong hình trên ta có ba Label và ba Textbox. Mun sa ch Label1 ra "Ten" thì edit
Property Caption. Còn Textbox không dùng Property Caption mà dùng Property Text.
Ta cũng có th thay đổi các Property Caption và Text trong khi chy chương trình (at
run-time). Trong lúc thiết kế (design time) bn có th sa đổi kiu ch ca nhng
Controls bng cách edit Property Font ca chúng trong ca s Properties (click bên
phi ca Property Font trong Properties Window, IDE s pop-up cái Font dialog để
bn la chn nhng đặc tính ca Font như trong hình dưới đây).
Nếu bn thy bc mình ti sao cái c ch t có (default size) ca các Control hơi
nh, bn có th gii quyết bng cách sa c ch ca chính Form cho nó ln hơn. Vì
khi mt Control được đặt lên mt Form, nó tha kế c ch ca Form.Để sp xếp cho
mt s Control thng hàng vi nhau bn chn c nhóm ri dùng mnh lnh Menu
Format|Align|Lefts .v.v..Nếu bn chưa biết cách chn mt nhóm Control thì có
hai cách. Cách th nht bn đè nút Shift trong khi click các Control bn mun chn.
Cái Control mà bn chn sau cùng s là cái chun để các Control khác s làm ging
theo. Cách th hai là Drag cho si dây thun (rubber band) bc chung quanh các
Control. Trong trường hp các Control ny nm trong mt container, thí d như mt
khung (Frame) hay PictureBox, thì bn phi click Form trước, ri đè nút Ctrl trong khi
Drag rubber band bao các Control.
Cha mi th ca mt d án VB
Ti đây bn để ý thy trong ca s bên phi, phía trên, gi là Project Explorer, có
hình ging như mt cái cây (tree) cho thy ta có mt Form trong mt Project (d
án). Project là mt cách tin dng để ta sp xếp nhng gì cn thiết cho mt d án.
Thường thì mt d án có nhiu Form và có th cn nhng th khác.Mi Form s
được cha vào đĩa dưới dng "frmMainForm.frm". Bn save mt form bng menu
command File | Save formfilename.frm. Nếu trong Form1 có cha hình nh (thí
d bn dùng Properties Window để chn mt icon hình gương mt cười làm icon
cho frmMainForm) thì các hình nh ca frmMainForm s đuc t động cha trong h
sơ "frmMainForm.frx". Lưu ý là không nht thiết tên ca h sơ (file) mà bn phi
cho biết khi cha (save) phi ging như tên ca Form mà bn dùng trong chương
trình. Tuy nhiên bn nên dùng cùng mt tên cho c hai để sau ny d tìm h sơ nếu
có tht lc. Theo qui ước thông thường, các Form được đặt tên bt đầu bng "frm",
thí d như "frmMainForm".Khi bn save mt Project thì có nghĩa là save tt c h sơ
dùng cho d án, k c các Form và mt h sơ cho chính Project, thí d như
"MyFirstProg.vbp" ("vbp" là viết tt ch Visual Basic Project). Bn save Vb6 project
bng menu command File | Save Project. À, mun đổi tên Project, bn click lên
hàng trên cùng bên phi trong ca s Project Explorer (Project1 (Project1.vbp)), ri
edit tên ca Project trong ca s Properties phía dưới. Bn nên cha tt c nhng h
sơ dùng cho cùng mt Project trong cùng mt tp (Folder/Directory).Bn có th
dùng Notepad để m ra xem chơi, coi trong "frmMainForm.frm" có gì. Bn s thy
trong y gm có hai phn: phn đầu là din t các Control nm trong Form, phn
còn li là mã lp trình mà bn viết. Bn cũng s chú ý là các properties mà bn đã
sa cho các Control đều được ghi li trong phn đầu nói trên. VB da vào phn din
t các Control để thiết lp li (reconstruct) hình nh ca Form.
Sau ny,
khi đã lão luyn VB, bn có th dùng mt chương trình t động chế (generate) ra
nhng hàng din t các Control cho mt Form.Đó là k thut dùng trong các Wizards
ca VB để chế mt s chương trình khi đầu cho chúng ta t các bng km
(Template).
Thêm mã lp trình để x lý mt s c
Hu hết lp trình trong Visual Basic là viết mã để x lý các s c (Event). Thí d
mun chm dt chương trình, người s dng s click nút "Xuat". Để thc hin điu
ny trong khi trin khai chương trình bn doubleClick (click liên tiếp 2 ln) nút
"Xuat". VB IDE s viết sn cho bn cái v ca mt Subroutine:
Private Sub cmdXuat_Click() End ' Bn ch viết thêm dòng ny để kết thúc chương trìnhEnd Sub
Để ý là tên (Name) ca nút Xuat là "cmdXuat" ("cmd" là viết tt ch
CommandButton), VB gn thêm du gch dưới và Event Click để làm thành tên
cmdXuat_Click ca Sub, chương trình nh s được x lý khi người s dng click
nút Xuat. Chương trình nh hay Subroutine ny còn được gi là Event Handler cho
Event Click. Hàng ch xanh lá cây là dùng để gii thích cho lp trình viên (gi là
Comment), VB s hoàn toàn không chú ý đến nó khi x lý Sub
cmdXuat_Click.Comment có nghĩa là chú thích. Trong VB chú thích bt đầu bng du
single quote '. Khi VB thy du ny là nó b qua nhng gì còn li trên dòng mã.Là
Lp trình viên chuyên nghip bn nên tp thói quen dùng Comment mi nơi để giúp
người khác và chính bn hiu chương trình ca mình. Nên nh là tin phí tn để bo
trì mt chương trình thì ít nht là tương đương vi s tin b ra ln đầu để trin
khai. Bo trì có nghĩa là thăm viếng li chương trình để sa li (fix bug) và thêm các
đặc đim cho hay hơn (enhancement).Nói chung h bn làm điu gì bí him hay cc
c thì làm ơn gii thích rõ ràng.Nếu mun ct mt dòng mã VB ra làm hai dòng thì
chm dt dòng th nht bng du gch dưới _.Tiếp theo, bn doubleClick nút "Viet
vao dia" và viết nhng hàng mã sau:
Private Sub cmdViet_Click() Open "myFriends.txt" For Output As #2 ' M mt h sơ để viết ra và gi
là cng s 2 ' Viết vào cng s 2: Tên, Địa ch và Tui, ngăn cách nhau bng du chm phy Print
#2, txtTen & ";" & txtDiachi & ";" & txtTuoi Close #2 ' Đóng cng s 2End Sub
Trong Sub cmdViet_Click, trước hết ta m mt h sơ tên là "myFriends.txt" và gi
nó là cng s 2. Sau khi m h sơ để viết ra ta ráp Tên, Địa ch và Tui li, ngăn
cách bng du chm phy (;) để đánh du nh sau ny ta mun g riêng ba th ra
tr li. Du "&" là operator để ráp (concatenate) hai dòng ch (text string) li vi
nhau.Print #2 có nghĩa là viết ra cng s 2, tc là h sơ "myFriends.txt".Th chúng
ta viết ra cng 2 là Tên, Địa ch và Tui (txtTen & ";" & txtDiachi & ";" & txtTuoi).
Nhng rc ri ca vic m mt h sơ
Cái cng s 2 trên là ta t chn (arbitrary). Tht ra mun gi cng s my cũng
được, min là chưa có phn nào khác trong cùng chương trình ny đang dùng cng
s y. Đây là mt cách VB làm vic cho tin thay vì gi nguyên mt cái tên h sơ
dài.Nếu mun chc chn không trùng s cng vi ch nào khác, ta có th làm như
sau:
fileNo = freefile
Ri thay thế s 2 bng ch fileNo trong Sub cmdViet_Click. freeFile là mt Function
(chương trình nh dùng để tính ra mt th) nh VB cp phát cho mt con s đại
din h sơ chưa ai dùng.Ch Output trong câu ( Open "myFriends.txt" For Output As #2 )
dùng đây để nói t CPU (Central Processing Unit) ta mun "viết ra" mt h sơ. Khi
m mt h sơ để viết ra kiu ny thì nếu h sơ chưa có nó s được dng nên
(created). Nếu h sơ đã có ri thì nó s b xoá b (delete) và đồng thi mt h sơ
trng và mi s được dng nên. Động t chuyên môn là "viết chng lên"
(overwrite).Nếu ta m mt h sơ để "đọc vào" thì dùng ch "Input" thay vì
"Output". Còn nếu "viết thêm" vào mt h sơ có sn (ch không overwrite h sơ
y) thì dùng ch "Append" thay vì "Output". Trong trường hp y bn phi kim
xem h sơ "myFriends.txt" đã có sn chưa. Bn có th viết như sau: If
Dir("myFriends.txt") <> "" then ' Nếu h sơ "myFriends.txt" hin hu Open "myFriends.txt" For
Append As #2 ' M mt h sơ để viết thêm và gi là cng s 2 Else Open "myFriends.txt" For
Output As #2 ' M mt h sơ để viết ra và gi là cng s 2 End If
Function Dir("myFriends.txt") dùng trên s cho ta tên ca h sơ nếu h sơ hin
hu, ngược li nó s cho mt dòng ch trng (empty string), biu hiu là "". Ti đây,
nếu lanh ý bn s hi h sơ "myFriends.txt" nm folder nào. Câu tr li là không
biết chc. Nếu bn chưa cha (save) chương trình vào dĩa (vì mi viết) thì nó nm
folder ca VB6.EXE. Còn như đã cha chương trình ri thì có l nó nm folder ca
chương trình bn. Mun h sơ "myFriends.txt" luôn luôn đi cùng vi chương trình,
bn có th làm như sau:
MyLocalFolder = App.path ' Ly folder ca chương trình x lý ca bn If Right(MyLocalFolder,1)
<> "\" then ' Nếu ch cui cùng không phi là backslash MyLocalFolder = MyLocalFolder & "\" ' thì
gn thêm mt backslash cui End If ' M mt h sơ vi tên có folder (full pathname) để viết ra
và gi là cng s 2 Open MyLocalFolder & "myFriends.txt" For Output As #2