tự hoc visual basic 6.0 phần 2

67 276 0
tự hoc visual basic 6.0 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

Ngày đăng: 18/10/2014, 12:27

Từ khóa liên quan

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

Tài liệu liên quan