T HC VISUAL BASIC 6.0 - PHN 3 1
MC LC
Dùng Ha (Phn II) ................................................................................. 3
Dùng Ha (Phn III).............................................................................. 12
C s d liu (Database)............................................................................. 23
Dùng Control Data ...................................................................................... 35
Lp trình vi k thut DAO .......................................................................... 46
Lp trình vi ADO (phn I) .......................................................................... 58
T HC VISUAL BASIC 6.0 - PHN 3 2
T HC VISUAL BASIC 6.0 - PHN 3 3
Dùng Ha (Phn II)
In trên màn nh
VB6 có method Print cho ta in thng trên Form, PictureBox hay Printer. Ba loi
control này đc coi nh nhng khung vi mà ha s v lên.
Bn hãy khi đng mt chng trình VB6 mi. t lên form mt PictureBox tên
Picture1 và mt button tên CmdPrintTenLines vi Caption Print Ten Lines.
DoubleClick lên button này và vit code di đây:
Private Sub CmdPrintTenLines_Click()
Dim i As Integer
' String variable used for display
Dim strLine As String
' Write 10 lines, one under the other
For i = 1 To 10
strLine = "This is line " & CStr(i)
Me.Print strLine ' Print on Form
Picture1.Print strLine ' Print on Picture1
Next
End Sub
Bn hãy chy th program ri click nút Print Ten Lines. Trong trng hp này
ta dùng default Font và Color đ in 10 hàng. Sau mi Print, chng trình t đng
xung hàng.
K đó, thêm mt button tên CmdPrintFontSizes vi Caption Print Font Sizes.
DoubleClick lên button này và vit code di đây:
Private Sub CmdPrintFontSizes_Click()
Dim i As Integer
' Print numbers 1 to 10, one after the other on the same line
For i = 1 To 10
' Define Font size
Me.Font.Size = Me.Font.Size + i
' Define Color using Function QBColor
Me.ForeColor = QBColor(i)
' Print without moving to next line. Note the semicolon ";"
Me.Print Str(i);
Next
End Sub
T HC VISUAL BASIC 6.0 - PHN 3 4
Trong Sub CmdPrintFontSizes_Click, ta thay đi c kiu ch đ cho các con s
đc in ra ln lên dn dn và thay đi màu ca các con s bng cách dùng
function QBColor. in các con s liên tc không xung hàng ta dùng method
Print vi semicolon (;). Bn hãy chy chng trình li. Click nút Print Ten Lines
ri click nút Print Font Sizes, kt qu s ging nh di đây:
Bây gi bn th minimize ca s ca chng trình, k đó restore nó li kích
thc c. Bn s thy các hàng ta in lúc nãy không còn trong form hay
PictureBox na.
Lý do là khi ta Print lên form hay PictureBox, các hình y đc v trong graphic
đa phng ch không đc VB6 k là mt phn ca ca s. Mun tránh tr ngi
này ta phi dn VB6 nh v li bng cách set property AutoRedraw ca form
và Picture1 ra True.
T HC VISUAL BASIC 6.0 - PHN 3 5
H thng ta đ
Khi đt mt Object hay v mt cái gì lên màn nh (screen) hay form .v.v.. ta cn
phi ch đnh Object y nm ch nào k t (with reference to) cái góc Trên Trái
(Top Left) ca màn nh hay form.
Cái góc Trên Trái là Trung tâm ta đ ca screen hay form. đó ta đ X và Y
đu bng 0, ta vit là 0,0. Nu ta đi ln qua phi theo chiu rng ca screen thì
ta đ X tng lên. Nu ta đi dc xung di theo chiu cao ca screen thì ta đ
ca Y tng lên.
K đn là đn v đo lng ta dùng đ biu din khong cách. Trong bài trc ta
đã nói đn đ mn ca màn nh (screen resolution) da vào pixel. Ta có th
dùng đn v pixel đ nói mt Object có ta đ X và Y mi chiu bao nhiêu pixels
tính t trung tâm ta đ.
Nh th, ngay c trên cùng mt màn nh khi ta tng đ mn nó lên thì mt
Object đã đc đt lên màn nh theo đn v pixel s xích qua trái và lên trên
mt ít vì kích thc mt pixel bây gi nh hn lúc trc mt chút.
Hình di đây minh ha các kích thc ca màn nh và Form.
im cn bit là có nhng phn nh title bar và border ca mt form ta không
th v lên đc. Do đó din tích còn li ca form đc gi là Client Area. Chiu
rng và chiu cao ca Client Area đc gi là ScaleWidth và ScaleHeight.
Nu mun khong cách t mt Object đn trung tâm ta đ, hay kích thc ca
chính Object, không h thay đi dù ta có tng, gim đ mn ca màn nh hay in
hình ra printer (thí d ta mun nó luôn luôn dài 5cm chng hn) thì ta dùng h
thng ta đ theo đn v twips ca form.
T HC VISUAL BASIC 6.0 - PHN 3 6
Twips là Default Coordinate System ca VB6. Trong h thng này mi đim là
tng đng vi 1/567 centimeter. Do đó, nu bn v mt dng dài 567 twips
nó s hin th dài 1cm trên màn nh, và khi bn in nó ra, nó cng dài 1cm trên
giy. Tc là đ dài tht ca Object không tùy thuc vào loi màn nh (đ mn
cao hay thp) hay printer. Ngi ta nói nó là Device independent coordinate
system (H thng ta đ đc lp vi dng c). Nói mt cách khác Twips cho ta
tht s what you see is what you get (WYSIWYG - thy sao có vy), rt
thích hp vi Desktop publishing.
Bn có th thay đi h thng ta đ ca mt form bng cách edit property
ScaleMode qua ca s Properties nh sau:
Ghi chú: Thay đi tr s ScaleMode không có hiu lc ngay mà ch nh hng
nhng gì đc thit k sau đó.
Ging nh khi ta Edit Text trong Notepad, Text Cursor (thanh | chp chp) là v
trí hin ti, ni s hin th cái ch ta đánh sp ti, trong graphic ta có mt
Cursor vô hình, ni s hin th cái gì ta sp Print. Ta ch đnh v trí ca graphic
cursor y bng cách cho tr s ca CurrentX và CurrentY.
Bn hãy khi đng mt d án VB6 mi và vit code cho Event Resize ca form
chính nh sau:
T HC VISUAL BASIC 6.0 - PHN 3 7
Th chy chng trình và Resize form. Mi khi bn Resize form, ch X s đc
di đn v trí khong chính gia ca Client Area ca form.
Dùng Graphics
ã có mt chút cn bn v graphics ca VB6, bây gi ta có th đt nhng
graphics lên form. Có hai cách đ làm chuyn y:
• Dùng Graphical Controls: Ta có PictureBox và Image có th cha
hình nh. Trong khi Line và Shape có th v đng thng hay các hình
ch nht, tròn .v.v.. trên form, lúc thit k.
• Dùng Graphics Methods: ây là nhng mnh lnh cho ta v trc tip
lên form lúc run-time. Các mnh lnh VB6 cho ta là Cls, Pset, Point,
Line và Circle.
T HC VISUAL BASIC 6.0 - PHN 3 8
Tùy theo hoàn cnh, bn có th la chn cách nào tin dng.
PictureBox và Image
Dùng PictureBox hay Image là cách d nht đ hin th mt graphic trong form.
Lúc thit k, bn có th đánh thng tên ca graphic vào property Picture trong
ca s Properties. Form cng nhn property Picture. Bn cng có th click lên
bên phi ch property Picture đ browse và chn mt graphic, thng là Bitmap
hay Icon.
S khác bit chí gia Image và PictureBox là Image có property Stretch mà ta
có th set thành True đ kéo dãn graphic ra cho chim trn din tích ca Image.
Image là mt grapgic control lightweight (nh ký), tc là nó không đòi hi
nhiu memory và chy nhanh hn PictureBox. Lý do là PictureBox là mt
container, tc là nó có th cha các controls khác. Ngoài ra, PictureBox cng cho
phép ta v lên trên nó ging nh trên form.
T HC VISUAL BASIC 6.0 - PHN 3 9
Trong hình di đây, trong lúc thit k ta đt mt PictureBox và mt Image cùng
mt c lên cùng mt form. K đó ta assign cùng mt picture hình happy.bmp
cho c hai. Riêng vi Image, ta set property Stretch ca nó ra True.
Ch đnh hình nh lúc run-time
Trong lúc program đang chy, ta có th thay đi hình nh cha trong PictureBox
hay Image bng cách dùng Function LoadPicture. Nh là ta không th assign
trc tip vào Property Picture ca hai graphical controls này. Lý do là Property
Picture ch là mt cách thân thin cho ta ch đnh mt graphic trong lúc thit k.
Khi mt hình nh đã đc ch đnh ri, VB6 cha c hình y vào file có cùng tên
vi file ca form nhng vi extension .frx. Tc là nu tên ca form là Form1 thì
graphic ca Property Picture đc cha chung vi các graphics khác ca form
trong file Form1.frx.
Do đó, vì VB6 program cha luôn graphic chung vi nó, ta không cn phi nhc
đn tên ca graphic file khi dùng hay deploy, tc là không cn đính kèm tên
graphic file trong Setup file cho ngi ta install. Di đây là code mu đ lúc
run-time ta load mt graphic tên sad.bmp nm trong Subfolder tên images ca
App.path vào Image control tên Image1.
Private Sub CmdLoad_Click()
Dim LocalDir As String
' Assign Folder where program resides to LocalDir
LocalDir = App.Path
' Append right backslash if last character is not "\"
If Right(LocalDir, 1) <> "\" Then
LocalDir = LocalDir & "\"
T HC VISUAL BASIC 6.0 - PHN 3 10
End If
' Load graphic "sad.bmp" from SubFolder "images" into Image1
Image1.Picture = LoadPicture(LocalDir & "images\sad.bmp")
End Sub
D nhiên, nu ta mun load graphic lúc run-time thì phi cung cp graphic file
riêng.
Control Shape
Control Shape cho phép bn v nhng hình đn gin nh đng thng, hp,
vòng tròn trên form, lúc thit k. Sau khi DoubleClick lên control Shape trong
Toolbox đ thêm mt control Shape vào form, bn chn loi Shape ca nó t
ca s Properties ri nm vào mt góc ca Shape trên form drag ln nh tùy ý.
Mun sn bên trong mt Shape, bn chn màu t property FillColor. Property
FillColor cng ging nh BackColor ca các controls khác, nhng nó ch có hiu
lc khi bn cho property FillStyle mt tr s khác hn là 1- Transparent
(trong sut), thí d nh 0- Solid (dày đc).
T HC VISUAL BASIC 6.0 - PHN 3 11
Control Line
Tng t vi các properties Fill ca Shape, đi vi Line bn có các properties
BorderColor, BorderStyle và BorderWidth. Border color ch đnh màu ca
chính đng thng, BorderStyle đ cho bn la đng liên tc hay gch chm,
và BorderWidth đ làm cho đng dày to hn. Các properties này cng áp dng
cho chu vi (đng bao quanh) ca các hình ch nht, tròn .v.v.
T HC VISUAL BASIC 6.0 - PHN 3 12
Dùng Ha (Phn III)
Graphics Methods
Trong khi các Graphical Controls nh Shape, Line cho ta v hình lúc thit k thì
Graphics Methods cho ta v nhng th y lúc run-time. Ta cng có th chm
tng đóm (pixel) hay copy c mt Picture t ch này đn ch khác.
Ch cn mt chút kinh nghim bn có th làm hot ha (animation) hay to
visual effects tuyt diu mà không cn phi đng đn Windows API
(Application Programming Interface) đ dùng Function BitBlt.
Method PaintPicture
Method PaintPicture cho phép bn copy rt nhanh mt khi d kin đ ha,
nói nôm na là mt khu vc trong mt hình graphic trên form, PictureBox hay
Printer đn mt ni khác. Thí d bn copy mt hình t ch này đn ch khác
trong form, hay t form/PictureBox ra Printer Object đ mt chc sau bn in nó
ra.
Bn hãy khi đng mt d án VB6 mi và DoubleClick lên PictureBox Icon trong
ToolBox đ đt mt PictureBox lên form. t tên PictureBox y là picGraphic và
set property Visible ca nó ra False đ ta không thy nó lúc run-time.
Bây gi load mt hình vào property Picture ca picGraphic bng cách Browse
mt Bitmap file t ca s Properties. đây ta chn INTL_NO.BMP t folder
\Program Files\Microsoft Visual
Studio\Common\Graphics\Bitmaps\Assorted
T HC VISUAL BASIC 6.0 - PHN 3 13
Trong chng trình này ta mun h khi đè nút trái ca Mouse xung và di
chuyn Mouse cursor thì khi cursor đi đn đâu, hình INTL_NO đc v đn đó.
Ta s dùng mt Flag đ đánh du nút-trái-ca-Mouse-Down, đt tên là
flgMouseDown. Khi nhn đc Event MouseDown ta set flgMouseDown
thành True, và khi nhn đc Event MouseUp ta reset flgMouseDown thành
False. Mi ln nhn đc Event MouseMove thì nu flgMouseDown là True ta s
PaintPicture INTL_NO.
xóa background ca form, ta thêm mt button tên CmdClearForm đ chy
graphic method Cls. Di đây là lit kê code mu:
' Flag that indicates that the Mouse's left button is depressed
Dim flgMouseDown As Boolean
Private Sub Form_Load()
' Initialise flgMouseDown to False
flgMouseDown = False
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
' Set Flag flgMouseDown
flgMouseDown = True
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As
T HC VISUAL BASIC 6.0 - PHN 3 14
Single, Y As Single)
' Paint picGraphic if flgMouseDown is True
If flgMouseDown Then
' Paint full-size picGraphic at Mouse cursor location
PaintPicture picGraphic.Picture, X, Y, picGraphic.Width,
picGraphic.Height
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
' Reset Flag flgMouseDown
flgMouseDown = False
End Sub
Private Sub CmdClearForm_Click()
' Clear the form
Cls
End Sub
Lu ý là bn phi declare variable flgMouseDown bên ngoài các Subs đ mi
Sub đu thy và có th dùng nó. Mun bit thêm chi tit v cách dùng method
PaintPicture, trong VB6 IDE DoubleClick lên ch PaintPicture trong code editor
đ highlight ch y ri bm nút F1.
Method PSet
Ta dùng method PSet (đn t ch Point Set) đ v mt pixel lên form. Ta cn
cho bit PSet đâu và vi màu gì, tc là ta cho nó ta đ X,Y ca pixel và mt
màu tính t function RGB.
T HC VISUAL BASIC 6.0 - PHN 3 15
Di đây là code đ v pixels đ màu lên form mt cách bt chng (randomly)
v v trí và màu sc khi user clicks lên form chính:
Private Sub Form_Click()
Dim i As Integer
' Variables for pixel coordinates
Dim iXCoord As Integer
Dim iYCoord As Integer
' Variable for primary colours
Dim iRed As Integer
Dim iGreen As Integer
Dim iBlue As Integer
' Start the Random number generation
Randomize
' Plot 2000 dots randomly
For i = 1 To 2000
' get a random XCoord.
' Note that Rnd(1) returns a real number between 0 and 1, eg:
0.384
iXCoord = Int(Rnd(1) * ScaleWidth)
' get a random YCoord.
iYCoord = Int(Rnd(1) * ScaleHeight)
' Get a random number between 0 and 254 for each primary colour
iRed = Int(Rnd(1) * 255)
iGreen = Int(Rnd(1) * 255)
iBlue = Int(Rnd(1) * 255)
' Plot the pixel at iXCoord,iYCoord
PSet (iXCoord, iYCoord), RGB(iRed, iGreen, iBlue)
Next
MsgBox ("All done!")
End Sub
Trong thí d trên ta dùng method Randomize đ generate sn trong b nh
các con s real bt chng t 0 đn 0.999. Sau đó mi ln ta gi Function
Rnd(1) là nó s tr v mt con s real ly bt chng t b s do method
Randomize generated. Do đó, Rnd(1) * ScaleWidth s cho ta mt con s real
có tr s t 0 đn ScaleWidth. Mun đi con s real đó ra Integer, ta dùng
Function Int.
Khi khi đng chng trình và Click lên form ta s có hình ging nh di đây:
T HC VISUAL BASIC 6.0 - PHN 3 16
Mách nc: xóa mt đóm bn Pset li ti ch y mt đóm mi có cùng màu
vi BackColor ca form.
Method Line
Method Line v mt đng thng t mt ta đ này đn mt ta đ khác
trong màu do ta ch đnh. Vi hai methods PSet và Line ta có th làm đc rt
nhiu chuyn. Thí d mun cho mt vt di đng, ta xóa vt y bng cách v li
nó vi cùng màu ca BackColor ca form, ri v vt y v trí mi. Mun v mt
đa giác nh tam giác hay ch nht ta ráp nhiu đng thng li vi nhau, đu
ca mi đng thng là cui ca đng thng va mi đc v trc. Mun sn
Shade bên trong mt hình ch nht ta dùng PSet..v.v.
Có ba cách đ ch đnh ta đ ca hai đu ca mt đng thng ta mun v:
1. Cho bit ta đ ca đu và cui đng thng:
thí d: Line (50, 100)-(3000, 4000)
Khi đng này đc v xong thì v trí ca graphic cursor có
ta đ là v trí ca cui đng, tc là CurrentX=3000 và
CurrentY=4000 trong trng hp này.
2. Ch cho bit ta đ cui đng thng:
thí d: Line -(3600, 4500), vbMagenta
Trong trng hp này v trí ca graphic cursor (CurrentX,
CurrentY) đc ly làm ta đ ca đu đng thng khi v.
Tc là nu trc khi execute dòng code này CurrentX=3000
và CurrentY=4000 thì dòng code tng đng vi:
Line (3000,4000)-(3600,4500), vbMagenta
T HC VISUAL BASIC 6.0 - PHN 3 17
3. Dùng ch Step đ nói s khác bit t CurrentX và CurrentY:
thí d: Line Step(400, 600)-Step(800, -500), vbGreen
Nu trc khi execute dòng code này CurrentX=3600 và
CurrentY=4500 thì dòng code tng đng vi:
Line (4000,5100)-(4800,4600), vbGreen
Trong thí d di đây, mt hình tam giác đc v bng hai cách coding khác
nhau. Khi chy program đ th, bn hãy ln lt click Triangle METHOD I và
Triangle METHOD II đ thy c hai cách v đu y nh nhau, ch khác màu
thôi.
Private Sub CmdTrianI_Click()
' Drawing a black triangle: METHOD I
Line (700, 500)-(2800, 2400)
Line (2800, 2400)-(1800, 900)
Line (1800, 900)-(700, 500)
End Sub
Private Sub CmdTrianII_Click()
' Drawing a red triangle: METHOD II
' Draw a red line from Location(700, 500) to Location (2800, 24000)
Line (700, 500)-(2800, 2400), vbRed
' Draw a red line from Location(2800,2400) to Location (1800,900)
Line -(1800, 900), vbRed
' Draw a red line from Location(1800,900) to Location (700,500)
Line -(700, 500), vbRed
End Sub
v mt hình ch nht, cách tin nht là dùng Step nh di đây:
Private Sub Rectangle(ByVal X1 As Integer, ByVal Y1 As Integer, ByVal
X2 As Integer, ByVal Y2 As Integer)
' Draw a rectangle
Line (X1, Y1)-(X2, Y1)
Line -(X2, Y2)
Line -(X1, Y2)
Line -(X1, Y1)
End Sub
Ta còn có th v mt hình ch nht vi bn góc tròn nh sau:
Private Sub RoundCornerRectangle(ByVal X1 As Integer, ByVal Y1 As
Integer, ByVal X2 As Integer, ByVal Y2 As Integer)
Const Delta = 50
' Draw a rectangle with round corner
Line (X1 + Delta, Y1)-(X2 - Delta, Y1)
Line -Step(Delta, Delta)
Line -(X2, Y2 - Delta)
T HC VISUAL BASIC 6.0 - PHN 3 18
Line -Step(-Delta, Delta)
Line -(X1 + Delta, Y2)
Line -Step(-Delta, -Delta)
Line -(X1, Y1 + Delta)
Line -Step(Delta, -Delta)
End Sub
Ta cng có th sn Shade bên trong hình ch nht bng cách dùng method PSet
đ chm các đóm cách nhau chng 50 pixels nh sau:
Private Sub Shade(ByVal X1 As Integer, ByVal Y1 As Integer, ByVal X2 As
Integer, ByVal Y2 As Integer)
' Shade a roundcorner rectangle by plotting dots using method Pset
Const Delta = 50
Dim i As Integer
Dim j As Integer
' Make sure that X1 is less than X2
' Swap values of X1, X2 if X1 > X2
If X2 < X1 Then
Temp = X1
X1 = X2
X2 = Temp
End If
' Make sure that Y1 is less than Y2
' Swap values of Y1, Y2 if Y1 > Y2
If Y2 < Y1 Then
Temp = Y1
Y1 = Y2
Y2 = Temp
End If
' Plotting dots inside the rectangle at 50 pixels apart
For i = X1 + Delta To X2 - Delta Step 50
For j = Y1 + Delta To Y2 - Delta Step 50
PSet (i, j)
Next
Next
End Sub
Mun Shade đm hn, bn có th chm các đóm gn nhau hn, thí d cho cách
nhau 30 pixels thay vì 50 pixels. Có mt cách khác là tng tr s ca
DrawWidth, đ dày ca đng v hay đóm.
Bây gi phi hp cách v hình ch nht vi method Shade nói trên và method
Print ta có th vit ch bên trong mt khung màu nht nh sau:
Private Sub CmdDrawFrame_Click()
Dim X1 As Integer
Dim Y1 As Integer
Dim X2 As Integer
Dim Y2 As Integer
' Initialise Coordinates of rectangle
T HC VISUAL BASIC 6.0 - PHN 3 19
X1 = 4200: Y1 = 1000
X2 = 6200: Y2 = 2000
' Draw a roundcorner rectangle
RoundCornerRectangle X1, Y1, X2, Y2
' Shade the rectangle
Shade X1, Y1, X2, Y2
' Position cursor to Print some text
CurrentX = X1 + 50
CurrentY = Y1 + 50
' Define Font Size
Font.Size = 18
' Print the text at cursor location
Print "Hello there!"
End Sub
Khi chy chng trình này và click tt c các buttons trên form, bn s có hình
di đây:
Hãy nh set property AutoDraw ca form ra True đ các graphic chng trình v
không b mt khi user minimises form.
Bn cng có th dùng nhng k thut nói trên vi Object Printer đ in các mu
giy đin chi tit.
Method Circle
Ta dùng Method Circle đ v hình tròn, hình bu dc và đng cung, vi bên
trong trng rng hay đc sn đy bng mt màu ta ch đnh. Ta phi cho bit
ta đ ca tâm đim vòng tròn và bán kính ca nó.
T HC VISUAL BASIC 6.0 - PHN 3 20
Bn hãy khi đng mt d án VB6 mi, đt lên form mt button vi tên
frmCircle và caption Circle & Lines. DoubleClick lên button y và vit code sau
đây:
Private Sub CmdCircleLine_Click()
' Draw a circle centered at 2000,1500 with radius equal 800
Circle (2000, 1500), 800
' Draw a vertical line from center
Line (2000, 1500)-Step(0, 800)
' Draw a horizontal line from center
Line (2000, 1500)-Step(800, 0)
End Sub
Bây gi hãy đt lên form mt button khác tên CmdArc và caption Draw Arc.
Thay vì v nguyên mt vòng tròn, ta s ch v mt hình vòng cung bng màu đ.
ch đnh rng ta s v t v trí nào trên vòng tròn đn v trí nào khác, thí d
t 45đ đn 230đ, ta cn phi đi degree ra đn v Radian bng cách dùng
Function Rads nh sau:
Private Function Rads(ByVal Degree As Single) As Single
' Convert Degrees to Radian
Const PI = 22 / 7
Rads = Degree / 180 * PI
End Function
Vòng cung luôn luôn đc v ngc chiu kim đng h. Di đây là code đ v
mt đng vòng cung màu đ bán kính 800, tâm đim (4000, 2000), t 45đ
đn 230đ:
Private Sub CmdArc_Click()
Circle (4000, 2000), 800, vbRed, Rads(45), Rads(230)
End Sub
Ta có th cho sn bên trong các hình tròn, hay Pie Slices (mt phn ca hình
tròn) bng cách set FillStyle bng 0 và ch đnh màu FillColor. Mt Pie Slice là
mt vòng cung đóng kính bi hai đng thng bán kính hai đu. Mun v mt
Pie Slice ta đánh thêm du tr ("-") trc hai tr s Radian, tc là dùng -
Rads(45), -Rads(230) thay vì Rads(45), Rads(230).
Di đây là code v hai Pie Slices, có tâm đim lch nhau mt tí, đng thi thêm
chú thích 87.5% và 12.5%.
Private Sub CmdPie_Click()
FillStyle = 0 ' Fill inside any closed shaped
FillColor = vbYellow
T HC VISUAL BASIC 6.0 - PHN 3 21
' Draw a Pie Slice from 90deg to 45deg in Yellow
Circle (3000, 4000), 800, , -Rads(90), -Rads(45)
' Position the graphic cursor to Print some text
CurrentX = 2800: CurrentY = 4400
Print "87.5%"
FillColor = vbBlue
' Draw a Pie Slice from 45deg to 90deg in Blue
Circle (3050, 3900), 800, , -Rads(45), -Rads(90)
' Position the graphic cursor to Print some text
CurrentX = 3400: CurrentY = 3000
Print "12.5%"
FillStyle = 1 ' No fill
End Sub
Cách dùng cui cùng ca method Circle là đ v mt hình bu dc (Elllipse).
V hình bu dc ging nh v mt hình tròn nhng ta cn cho thêm mt
parameter gi là Aspect. Aspect là s liên h gia bán kính vertical và bán kính
horizontal. Thí d nu Aspect=2 thì chiu cao ca hình bu dc gp đôi chiu
ngang, ngc li, nu Aspect=0.5 thì chiu ngang s gp đôi chiu cao.
Di đây là code ta dùng đ v hai hình bu dc cùng c, mt cái màu tím nm
thng đng và mt cái màu xanh nm ngang.
Private Sub CmdEllipse_Click()
Circle (1400, 3000), 800, vbMagenta, , , 2
Circle (1400, 3000), 800, vbBlue, , , 0.5
End Sub
Nu bn khi đng chng trình và click c bn buttons bn s thy hình sau
đây:
T HC VISUAL BASIC 6.0 - PHN 3 22
Property DrawMode
Thông thng khi ta v, tr s default ca property DrawMode là 13- Copy
Pen. Có mt tr s DrawMode rt thích hp cho áp dng hot ha là 7- Xor
Pen. Mun xóa mt hình va v xong ta ch cn v li hình y trong DrawMode
Xor Pen, không cn bit trc đó background nh th nào, nó s hin ra tr li.
T HC VISUAL BASIC 6.0 - PHN 3 23
C s d liu (Database)
Table, Record và Field
Nói đn c s d liu, ta lp tc ngh đn SQLServer, Access hay Oracle .v.v.,
nhng ni cha rt nhiu d liu đ ta có th lu tr hay ly chúng ra mt cách
tin li và nhanh chóng. Hu ht các chng trình ta vit đu có truy cp c s
d liu, và ta dùng nó nh mt công c đ làm vic vi rt nhiu d liu trong
khi tp trung vào vic lp trình phn giao din vi ngi dùng (users).
Do đó ta cn có mt kin thc cn bn v kin trúc ca c s d liu đ hiu lý
do to sao ta thit k hay truy cp nó theo nhng cách nht đnh.
Ta s dùng Access Database biblio.mdb, nm C:\Program Files\Microsoft
Visual Studio\VB98\biblio.mdb đ minh ha các ý nim cn bit v c s d
liu.
Trong database này có 4
tables: Authors (tác gi), Publishers (nhà xut
bn), Titles (đ mc) và Title Author.
Table Authors cha nhiu
records. Mi record trong table Authors cha 3
fields: Au_ID, Author và Year Born (nm sanh). Ta có th trình bày Table
Authors di dng mt spreadsheet nh sau:
T HC VISUAL BASIC 6.0 - PHN 3 24
Vì cùng mt field ca các records hin th trong cùng mt ct ca spreadsheet,
nên ta cng nói đn mt field nh mt
column (ct). Và vì mi data record
chim mt row (hàng) ca spreadsheet, nên có khi ta cng nói đn mt record
nh mt
row.
Tht tình mà nói, ta không cn phi có mt computer đ lu tr hay làm vic vi
mt table nh Authors này. Ta đã có th dùng mt hp ct, trên mi ct ta ghi
các chi tit Au_ID, Author và Year Born ca mt Author. Nh th mi tm ct
tng đng vi mt record và nguyên cái hp là tng đng vi Table
Authors.
Ta s sp các ct trong hp theo th t ca s Au_ID đ có th truy cp record
nhanh chóng khi bit Au_ID. Ch kh mt ni, nu mun bit có bao nhiêu tác
gi, trong s 300 ct trong hp, già hn 50 tui thì phi mt vài phút mi có th
tr li đc. Database trong computer nhanh hn mt h thng bng tay
(Manual) là ch đó.
Primary Key và Index
tránh s trùng hp, thng thng có mt field ca record, thí d nh Au_ID
trong Table Authors, đc dành ra đ cha mt tr s đc đáo (unique). Tc là
trong Table Authors ch có mt record vi field Au_ID có tr s y mà thôi. Ta gi
nó là
Primary Key.
T HC VISUAL BASIC 6.0 - PHN 3 25
Không phi lúc nào ta cng mun truy cp mt record Author da vào Au_ID.
Nhiu khi ta mun dùng chính tên ca Author đ truy cp, do đó ta cng cn
phi sort sn các records theo th t alphabet. Ta cng có th hp nhiu fields
li đ sort các records. Tht ra, chính các records không cn phi đc di đi đ
nm đúng v trí th t. Ta ch cn nh v trí ca nó đâu trong table là đ ri.
Cái field hay tp hp ca nhiu fields (thí d surname và firstname ) đ dùng
vào vic sorting này đc gi là
Index (ngón tay ch). Mt Table có th có mt
hay nhiu Index. Mi Index s là mt table nh ca nhng pointers, cha v trí
ca các records trong Table Authors. Nó ging nh mc lc index cui mt
cun sách cha trang s đ ch ta đn đúng phn ta mun tìm trong quyn sách.
Khi thit k mt Table ta ch đnh Datatype ca mi field đ có th kim tra
data cho vào có hp l hay không. Các Datatypes thông dng là Number, String
(đ cha Text), Boolean (Yes/No), Currency (đ cha tr s tin) và Date (đ
cha date/time). Datatype Number li gm có nhiu loi datatypes v con s
nh Integer, Long (integer chim 32 bits), Single, Double, .v.v.