Tự học Visual Basic phần 2

67 350 3
Tự học Visual Basic phần 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

T  H C VISUAL BASIC 6.0 - PH N II 1 MC LC Chng Mt - T to Object 2 Chng Hai – Debug 13 Chng Ba - Dùng Menu 25 Chng Bn - Dùng Dialogs 38 Chng Nm - Dùng  Ha (Phn I) 56 T  H C VISUAL BASIC 6.0 - PH N II 2 Chng Mt - T to Object T trc đn gi, ta lp trình VB6 bng cách thit k các Forms ri vit codes đ x lý các Events ca nhng controls trên Form khi Users click mt Button hay Listbox, .v.v Nói chung, cách y cng hu hiu đ trin khai, nhng nu ta có th hng đc các li ích sau đây thì càng tt hn na: 1. Dùng li đc code đã vit trc đây trong mt d án khác 2. D nhn din đc mt li (error) phát xut t đâu 3. D trin khai mt d án ln bng cách phân phi ra thành nhiu d án nh 4. D bo trì Mi ln dùng li code, nu đ y nguyên xi con là lý tng. Vic y đc gi là Reusability. Nói cho đúng ra, dùng li đc tht s là khi ta ch cn dùng object code, đó là code đã đc compiled ri, tc là hoàn toàn không đng đn source code. Vì h cho phép User sa source code là to c hi cho bugs xut hin, ri li phi debug mt ln na. S thách đ chính ca vic trin khai mt d án phn mm ln là thc hin đúng thi hn (on time), không l tài khóa (within budget) và d bo trì (ease of maintenance). Mun đt đc các mc tiêu y, ta phi trin khai nhanh và làm sao cho chng trình ít có bugs, d bo trì. Gi d bn đng ra t chc mt đám ci. Th tng tng bit bao nhiêu chuyn phi làm: t danh sách quan khách, thip mi, m thc, xe c, chp hình, quay phim, vn ngh cho đn th tc nghi l, tip tân, hot náo viên v.v Nu ch mt mình bn lo tht không bit làm sao nh cho ht. Cng may là nhà hàng s đm trách luôn c vic in n thip mi, ban nhc vn ngh và c hot náo viên. Th tc nghi l thì không ai qua đc bác Sáu t, và bác đã nhn li mua quà cáp, lo v tip tân, xe c và th tc, nghi l. Bác cng s liên lc vi Mc s ch l đ dn ch nhà th và sp đt ngi git chuông và ngi đàn. Anh T Thông có ngi bn làm ch tim hình, nên anh nhn trách nhim mn ngi lo chp hình, quay phim. Nh th vic bn t chc cái đám ci nay rút li ch còn son danh sách quan khách, các bài din vn, sp ch ngi và dn ch cho cp v chng mi đi hng tun trng mt. S d bn cm thy trách nhim t chc không nng n vì nhà hàng, bác Sáu t và anh T Thông t lo gánh vác các khâu rc ri. Cái hay  đây T  H C VISUAL BASIC 6.0 - PH N II 3 là nhng ngi ny t lo quyt đnh mi chi tit ca nhng gì cn phi làm trong khâu ca h. Ch khi nào cn lm, h mi liên lc đ ly ý kin ca bn. H ging nh nhng ngi thu ca bn. Chc bn đã lu ý rng cái thí d t chc đám ci ny cho thy nói chung mun trin khai d án ln nào ta cn phi nh nhng ngi thu giúp đ. Qu tht, đó là cách các qun tr viên nhng công trình đã làm t xa đn nay. Bây gi tr li chuyn lp trình, phi chi ta có th t chc cách trin khai d án phn mm ging nh t chc cái đám ci nói trên thì tt quá. Tht ra, không phi các lý thuyt gia phn mm không ngh đn chuyn y trc đây, nhng đ thc hin đc vic y ngi ta cn trin khai các phng tin, dng c thích hp. Ch trong vòng 15 nm tr li đây, vic y mi tr nên c th qua các Operating Systems tinh vi, nht là dùng Windows, và các ngôn ng lp trình nh Eiffel, SmallTalk, C++ .v.v Lp trình theo hng đi tng (Object Oriented Programming) Nói mt cách nôm na, lp trình theo hng đi tng là thit k các b phn phn mm ca chng trình, gi là Objects sao cho mi b phn có th t lo liu công tác ca nó ging nh mt ngi thu ngoài đi vy. Chc có l bn s hi th thì các Sub hay Function mà bn đã tng vit đ x lý tng giai đon trong chng trình có th đm trách vai trò ca mt thu không? Ngi thu chng nhng có th làm đc công tác (Subs và Functions) gì mà còn chu trách nhim luôn c mi th vt dng cn thit (data) cho vic y na. Có mt cách đnh ngha khác cho Object là mt Object gm có data structure và các Subs/Functions làm vic trên các data y. Thông thng, khi ta dùng Objects ít khi giám th chúng, ngc li nu khi có s c gì thì ta mun chúng báo cáo cho ta bit. Trong VB6, các Forms, Controls hay ActiveX là nhng Objects mà ta vn dùng lâu nay. Ly thí d nh Listbox. Mt Listbox t qun lý các items hin th bên trong nó. Ta bit listbox List1 đang có bao nhiêu items bng cách hi List1.ListCount. Ta bit item nào va mi đc selected bng cách hi List1.ListIndex. Ta thêm mt item vào listbox bng cách T  H C VISUAL BASIC 6.0 - PH N II 4 gi method AddItem ca List1, v.v Nói cho đúng ra, Object là mt thc th ca mt Class. Nu Listbox là mt Class thì List1, List2 là các thc th ca Listbox. Cng ging nh Bà T Cháo Lòng và Dì Sáu Bánh Tm là các thc th ca Class u Bp. Ngay c mt form tên frmMyForm mà ta vit trong VB6 chng hn, nó cng là mt Class. Thng thng ta dùng thng frmMyForm nh sau: frmMyForm.Show Trong trng hp ny tht ra frmMyForm tuy là mt Class nhng đc dùng y nh mt Object. Ch nu mun, ta có th to ra hai, ba Objects ca Class frmMyForm cùng mt lúc nh trong thí d sau: Dim firstForm As frmMyForm Dim secondForm As frmMyForm Set firstForm = New frmMyForm Set secondForm = New frmMyForm firstForm.Show secondForm.Show Trong thí d trên ta declare firstForm và secondForm là nhng Objects ca Class frmMyForm. Sau đó ta làm nên (instantiate) các Objects firstForm và secondForm bng statements Set . = New . firstForm và secondForm còn đc gi là các instances ca Class frmMyForm. Class ging nh cái khuôn, còn Objects ging nh nhng cái bánh làm t khuôn y. Chc bn đã đ ý thy trong VB6 t dùng hai t Class và Object ln ln nhau. u ny cng không quan trng, min là bn nm vng ý ngha ca chúng. VB6 có ym tr Class mà ta có th trin khai và instantiate các Objects ca nó khi dùng. Mt Class trong VB6 có cha data riêng ca nó, có nhng Subs và Functions mà ta có th gi. Ngoài ra Class còn có th Raise Events, tc là báo cho ta bit khi chuyn gì xãy ra bên trong nó. Cng ging nh Event Click ca CommandButton, khi User clicks lên button thì nó Raise Event Click đ cho ta x lý trong Sub myCommandButton_Click(), chng hn. Classtrong VB6 không có h tr Visual components, tc là không có cha nhng controls nh TextBox, Label .v.v Tuy nhiên, ta có th ly nhng control có sn t bên ngoài ri đa cho Object ca Class dùng. T  H C VISUAL BASIC 6.0 - PH N II 5 Bây gi chúng ta hãy bt đu vit mt Class. Bn hãy m mt Project mi loi Standard EXE Visual Basic. Sau đó dùng Menu Command chn Add Class Module: Khi Add Class Module dialog hin ra chn Class Module và click Open. Bn s thy m ra mt khung trng và Project Explorer vi Properties Window. Trong Properties Window, hãy sa Name property ca Class thành clsBox nh di đây: T  H C VISUAL BASIC 6.0 - PH N II 6 K đó đánh vào nhng dòng code di đây, Option Explicit Private mX As Integer Private mY As Integer Private mWidth As Integer Private mHeight As Integer Public Property Let X(ByVal vValue As Integer) mX = vValue End Property Public Property Get X() As Integer X = mX End Property Public Property Let Y(ByVal vValue As Integer) mY = vValue End Property Public Property Get Y() As Integer Y = mY End Property Public Property Let Width(ByVal vValue As Integer) mWidth = vValue End Property Public Property Get Width() As Integer Width = mWidth T  H C VISUAL BASIC 6.0 - PH N II 7 End Property Public Property Let Height(ByVal vValue As Integer) mHeight = vValue End Property Public Property Get Height() As Integer Height = mHeight End Property Public Sub DrawBox(Canvas As Object) Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), , B End Sub Public Sub ClearBox(Canvas As Object) Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), Canvas.BackColor, B End Sub Class clsBox có 4 Properties: X, Y, Width và Height. Ta s instantiate mt Box t clsBox. Mi Box có ta đ (X,Y) và kích thc chiu rng và chiu cao (width, height) ca nó. Tht ra ta có th dùng Public statement đ declare các bin X, Y, Width và Height. Nhng  đây ta c ý declare chúng là Private, di dng mX, mY, mWidth và mHeight. Khi ta mun thay đi các tr s ca chúng, ta s dùng cùng mt cách vit code nh bình thng (thí d: myBox.X = 80 ). Nhng khi chng trình x lý assignment statement y, nó s execute mt loi method (ging nh Sub) gi là Property Let X (vValue). Ta thy  đây vValue đc assigned cho mX (i.e. mX = vValue ), cái Private variable ca X. Nh th công vic ny cng chng khác gì sa đi mt Public variable X. Tuy nhiên,  đây ta có th vit thêm code trong Property Let X đ nó làm gì cng đc. Bn có nh trong khi thit k mt Label, mi ln bn dùng Property Window đ edit Font size, forcolor hay backcolor thì chng nhng các properties y ca Label thay đi, mà kt qu ca s thay đi đc có hiu lc ngay lp tc, ngha là Label đc hin th tr li vi tr s mi ca property. ó là vì trong method Property có c code bo Label redisplay. Ngc li, khi ta dùng property X ca Object myBox, không phi ta ch đc tr s thôi mà còn execute c cái method Property Get X. Nói tóm li, Property cho ta c hi đ execute mt method mi khi User đc hay vit tr s variable y. Thí d nh nu ta mun kim soát đ ch chp nhn tr s ta đ X mi khi nó không phi là s âm. Ta s sa Property Let X li nh sau: T  H C VISUAL BASIC 6.0 - PH N II 8 Public Property Let X(ByVal vValue As Integer) If (vValue >= 0) Then mX = vValue End If End Property Property có th là Read Only hay Write Only. Nu mun mt Property là Read Only thì ta không cung cp Property Let. Nu mun mt Property là Write Only thì ta không cung cp Property Get. Ngoài ra nu làm vic vi Object, thay vì Data type thông thng, thì ta phi dùng Property Set, thay vì Property Let. Thí d ta cho clsBox mt Property mi, gi là Font dùng object ca class stdFont ca VB6. Trong clsBox ta declare mt Private variable mFont và vit mt Property Set Font nh sau: Private mFont As StdFont Public Property Set Font(ByVal newFont As StdFont) Set mFont = newFont End Property Ta s dùng property Font ca myBox (thuc Class clsBox) nh sau: ' Declare an object of Class StdFont of VB6 Dim myFont As StdFont Set myFont = New StdFont myFont.Name = "Arial" myFont.Bold = True Dim myBox As clsBox Set myBox = New clsBox Set myBox.Font = myFont ' Call the Property Set method Class clsBox có hai Public Subs, DrawBox và ClearBox. ClearBox cng v mt box nh DrawBox, nhng nó dùng BackColor ca màn nh (canvas), nên coi nh xóa cái box có sn. Do đó, nu mun, bn có th sa Sub DrawBox li mt chút đ nhn mt Optional draw color nh sau: Public Sub DrawBox(Canvas As Object, Optional fColor As Long) If IsMissing(fColor) Then Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), , B Else Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), fColor, B End If End Sub T  H C VISUAL BASIC 6.0 - PH N II 9 Trong thí d trên, Optional parameter fColor đc tested bng function IsMissing. Nu fColor là BackColor ca canvas thì ta s có hiu qu ca ClearBox. Trong form chính ca chng trình dùng đ test clsBox, mi khi ta refer đn mt object thuc class clsBox, IDE Intellisense s hin th các Properties và Subs/Functions ca clsBox nh trong hình di đây: Trong chng trình ny, mi khi ta click nút Draw thì mt Box đc instantiate, cho ta đ X,Y và kích thc Width, Height, ri đc v ra ngay trên form. Ch Me trong code nói đn chính cái form frmClass. T  H C VISUAL BASIC 6.0 - PH N II 10  cho chng trình thú v hn, khi user clicks nút Animate, ta s cho mt box màu đ chy t trái qua phi. Khi user clicks nút Two Boxes ta s v hai boxes, hp trong màu xanh, hp ngoài màu đ, và cho chúng chy t trái sang phi.  đây ta biu din cho thy mình mun instantiate bao nhiêu boxes t clsBox cng đc, và d nhiên mi box có mt b properties vi giá tr riêng ca nó. Ta có th lp trình đ cho Object báo cáo program ch ca nó khi có mt bin c (Event) xãy ra bên trong Class. Ta th declare mt Event tên Draw trong clsBox, và vit code đ mi khi Sub DrawBox executes thì Class s Raise mt event Draw. Public Event Draw(X As Integer, Y As Integer) Public Sub DrawBox(Canvas As Object, Optional fColor As Long) If IsMissing(fColor) Then Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), , B Else Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), fColor, B End If RaiseEvent Draw(mX, mY) End Sub [...]... gì statement Print ICounter) nh trong hình d i ây: T H C VISUAL BASIC 6.0 - PH N II 21 Mu n h y b m i breakpoints b n dùng Menu command Debug | Clear All Breakpoints ti n vi c debug, b n có th dùng Debug Toolbar b ng cách hi n th nó v i Menu command View | Toolbars | Debug VB6 IDE s hi n th Debug Toolbar nh sau: T H C VISUAL BASIC 6.0 - PH N II 22 Dùng Immediate Window Immediate Window cho phép ta execute... String, HasFolder As Boolean, IncludeTimeDate As Integer) ' Append event message Msg to a text Logfile GivenFileName T H C VISUAL BASIC 6.0 - PH N II 23 ' If GivenFileName is fullPathName then HasFolder is true ' IncludeTimeDate = 0 : No Time or Date ' = 1 : Prefix with Time ' = 2 : Prefix with Time and Date Dim FileNo, LogFileName, theFolder If HasFolder Then LogFileName = GivenFileName Else If Right(App.Path,... Integer) ây ta ch hi n th m t s i p báo cáo m t h p v a cv âu Khi ch y program, m i l n m t clsBox object executes Sub DrawBox ta s th y frmClass display m t message gi ng nh d i ây T H C VISUAL BASIC 6.0 - PH N II 12 Nh r ng, ta declare m t Object v i WithEvents khi ta mu n handle các Events c a nó Trong thí d trên frmClass là ch c a myBox và nó handles Event Draw c a myBox T ng t nh v y, ngay c bên... n m trên hàng ó thì là h y b break point Lúc program ang d ng l i, b n có th xem tr s c a m t variable b ng cách cursor lên trên variable y, tooltip s hiên ra nh trong hình d i ây: T H C VISUAL BASIC 6.0 - PH N II 20 Có m t s chuy n khác b n có th làm trong lúc n y B n có th n m d u ch m tròn kéo (drag) nó ng c lên m t hay nhi u hàng code nó s execute tr l i vài hàng code B n cho program execute t... B n ánh ICounter = 15 vào textbox Expression và click option box Break When Value Is True trong h p Watch Type Làm nh v y có ngh a là ta mu n program ng ng khi ICounter b ng 15 T H C VISUAL BASIC 6.0 - PH N II Dùng Ph 24 ng Pháp Tri t Khai (Elimination Method) Có m t ph ng pháp r t thông d ng khi debug là Comment Out nh ng hàng code nghi ng xem bug có bi n m t không Nó c g i là Elimination Method N... Window li t kê cho b n tr s c a t t c variables trong m t Sub/Function và View | Call Stack li t kê th b c các Sub g i l n l t t ngoài vào trong cho n v trí code ang ng ng hi n th i T H C VISUAL BASIC 6.0 - PH N II Ch 25 ng Ba - Dùng Menu Menu trong Windows là n i t t c các commands c a m t program c s p x p th t theo t ng lo i giúp ta dùng d dàng Có hai lo i menu ta th ng g p: drop-down (th xu ng) menu... làm vi c v i Designer c a nó (ch không ph i code c a Form) K ó ta dùng Menu Command Tools | Menu Editor hay click lên icon c a Menu Editor trên Toolbar làm cho Menu Editor hi n ra T H C VISUAL BASIC 6.0 - PH N II 26 u tiên có m t v t màu xanh n m trong khung tr ng c a Menu Editor, n i s hi n th Caption c a Menu Command u tiên c a Form Khi ta ánh ch &File vào Textbox Caption, nó c ng hi n ra trên v... visible/invisible (hi n ra/bi n m t) Bình th ng ta dùng tên c a MenuItems nhi u h n có m t Menu nh trong hình d i ây ta còn ph i edit thêm vào các MenuItems Open, Save, Close và Exit T H C VISUAL BASIC 6.0 - PH N II 27 Hình d i ây cho th y t t c các MenuItems c a Menu Command File u n m th t qua bên ph i v i b n d u ch m ( ) phía tr c Khi ta click d u tên ch qua ph i thì MenuItem ta ang Edit s có thêm... thêm b n d u ch m, t c là th t m t b c trong Menu (Nested) T ng t nh v y, khi ta click d u tên ch qua trái thì MenuItem ta ang Edit s m t b n d u ch m, t c là tr i m t b c trong Menu T H C VISUAL BASIC 6.0 - PH N II 28 N u mu n cho User dùng Alt key x d ng Menu, b n ánh thêm d u & tr c character b n mu n trong menu Caption Thí d Alt-F s th xu ng Menu c a Menu Command File N u b n t cho MenuItem &Open... có th cho User dùng Shortcut c a menuItem cho MenuItem m t Shortcut, b n ch n cho nó m t Shortcut t ComboBox Shortcut trong Menu Editor Trong hình d i ây ta ch n Ctrl+O cho mnuOpen T H C VISUAL BASIC 6.0 - PH N II 29 By default, menuItem c Enabled và Visible Lúc thi t k b n có th cho MenuItem giá tr kh i u c a Enabled và Visible b ng cách dùng Checkboxes Enabled và Visible Trong khi ch y program (at . dùng. T  H C VISUAL BASIC 6.0 - PH N II 5 Bây gi chúng ta hãy bt đu vit mt Class. Bn hãy m mt Project mi loi Standard EXE Visual Basic. Sau đó. I) 56 T  H C VISUAL BASIC 6.0 - PH N II 2 Chng Mt - T to Object T trc đn gi, ta lp trình VB6

Ngày đăng: 27/10/2013, 23:15

Hình ảnh liên quan

có mt Menu nh trong hình di đây ta còn phi edit thêm vào các MenuItems Open, Save, Close và Exit. - Tự học Visual Basic phần 2

c.

ó mt Menu nh trong hình di đây ta còn phi edit thêm vào các MenuItems Open, Save, Close và Exit Xem tại trang 26 của tài liệu.
Hình di đây cho th yt tc các MenuItems ca Menu Command File - Tự học Visual Basic phần 2

Hình di.

đây cho th yt tc các MenuItems ca Menu Command File Xem tại trang 27 của tài liệu.
Trong hình di đây ta c hn Ctrl+O cho mnuOpen. - Tự học Visual Basic phần 2

rong.

hình di đây ta c hn Ctrl+O cho mnuOpen Xem tại trang 28 của tài liệu.
Menu Bar Command y có th visible hay invisible (tàn hình). - Tự học Visual Basic phần 2

enu.

Bar Command y có th visible hay invisible (tàn hình) Xem tại trang 30 của tài liệu.
Ta dùng routine MsgBox đ hin th Message Box nh coding trong hình di  đây: - Tự học Visual Basic phần 2

a.

dùng routine MsgBox đ hin th Message Box nh coding trong hình di đây: Xem tại trang 39 của tài liệu.
Ta nó im tt m hình tt vì nó có màu sc so và rõ ràng. Bn có còn nh - Tự học Visual Basic phần 2

a.

nó im tt m hình tt vì nó có màu sc so và rõ ràng. Bn có còn nh Xem tại trang 57 của tài liệu.
Khi tat ng đ mn ca màn nh, các hình nh s nh li vì kích th c ca pixel  đc thu nh  l i. Do đó, ta có th  cho hi n th  nhi u th  h n trên desktop - Tự học Visual Basic phần 2

hi.

tat ng đ mn ca màn nh, các hình nh s nh li vì kích th c ca pixel đc thu nh l i. Do đó, ta có th cho hi n th nhi u th h n trên desktop Xem tại trang 59 của tài liệu.
Trong hình di đây làm t thí d cho th y màu xanh - Tự học Visual Basic phần 2

rong.

hình di đây làm t thí d cho th y màu xanh Xem tại trang 62 của tài liệu.
Khi mt hình Graphic đ clu tr the od ngs pixels vi màu ca chúng nh   đã nói trên thì ta g i là m t Bit Map và tên file c a nó trong disk có extension BMP thí d  nh  House.bmp - Tự học Visual Basic phần 2

hi.

mt hình Graphic đ clu tr the od ngs pixels vi màu ca chúng nh đã nói trên thì ta g i là m t Bit Map và tên file c a nó trong disk có extension BMP thí d nh House.bmp Xem tại trang 67 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan