Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
67
Dung lượng
1,1 MB
Nội dung
T H C VISUALBASIC 6.0 - PH N II 1 MC LC Chng Mt - T to Object 2 Chng Hai – Debug 13 Chng Ba - Dùng Menu 25 Chng Bn - Dùng Dialogs 38 Chng Nm - Dùng Ha (Phn I) 56 T H C VISUALBASIC 6.0 - PH N II 2 Chng Mt - T to Object T trc đn gi, ta lp trình VB6 bng cách thit k các Forms ri vit codes đ x lý các Events ca nhng controls trên Form khi Users click mt Button hay Listbox, .v.v Nói chung, cách y cng hu hiu đ trin khai, nhng nu ta có th hng đc các li ích sau đây thì càng tt hn na: 1. Dùng li đc code đã vit trc đây trong mt d án khác 2. D nhn din đc mt li (error) phát xut t đâu 3. D trin khai mt d án ln bng cách phân phi ra thành nhiu d án nh 4. D bo trì Mi ln dùng li code, nu đ y nguyên xi con là lý tng. Vic y đc gi là Reusability. Nói cho đúng ra, dùng li đc tht s là khi ta ch cn dùng object code, đó là code đã đc compiled ri, tc là hoàn toàn không đng đn source code. Vì h cho phép User sa source code là to c hi cho bugs xut hin, ri li phi debug mt ln na. S thách đ chính ca vic trin khai mt d án phn mm ln là thc hin đúng thi hn (on time), không l tài khóa (within budget) và d bo trì (ease of maintenance). Mun đt đc các mc tiêu y, ta phi trin khai nhanh và làm sao cho chng trình ít có bugs, d bo trì. Gi d bn đng ra t chc mt đám ci. Th tng tng bit bao nhiêu chuyn phi làm: t danh sách quan khách, thip mi, m thc, xe c, chp hình, quay phim, vn ngh cho đn th tc nghi l, tip tân, hot náo viên v.v Nu ch mt mình bn lo tht không bit làm sao nh cho ht. Cng may là nhà hàng s đm trách luôn c vic in n thip mi, ban nhc vn ngh và c hot náo viên. Th tc nghi l thì không ai qua đc bác Sáu t, và bác đã nhn li mua quà cáp, lo v tip tân, xe c và th tc, nghi l. Bác cng s liên lc vi Mc s ch l đ dn ch nhà th và sp đt ngi git chuông và ngi đàn. Anh T Thông có ngi bn làm ch tim hình, nên anh nhn trách nhim mn ngi lo chp hình, quay phim. Nh th vic bn t chc cái đám ci nay rút li ch còn son danh sách quan khách, các bài din vn, sp ch ngi và dn ch cho cp v chng mi đi hng tun trng mt. S d bn cm thy trách nhim t chc không nng 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 rc ri. Cái hay đây T H C VISUALBASIC 6.0 - PH N II 3 là nhng ngi ny t lo quyt đnh mi chi tit ca nhng gì cn phi làm trong khâu ca h. Ch khi nào cn lm, h mi liên lc đ ly ý kin ca bn. H ging nh nhng ngi thu ca bn. Chc bn đã lu ý rng cái thí d t chc đám ci ny cho thy nói chung mun trin khai d án ln nào ta cn phi nh nhng ngi thu giúp đ. Qu tht, đó là cách các qun tr viên nhng công trình đã làm t xa đn nay. Bây gi tr li chuyn lp trình, phi chi ta có th t chc cách trin khai d án phn mm ging nh t chc cái đám ci nói trên thì tt quá. Tht ra, không phi các lý thuyt gia phn mm không ngh đn chuyn y trc đây, nhng đ thc hin đc vic y ngi ta cn trin khai các phng tin, dng c thích hp. Ch trong vòng 15 nm tr li đây, vic y mi tr nên c th qua các Operating Systems tinh vi, nht là dùng Windows, và các ngôn ng lp trình nh Eiffel, SmallTalk, C++ .v.v Lp trình theo hng đi tng (Object Oriented Programming) Nói mt cách nôm na, lp trình theo hng đi tng là thit k các b phn phn mm ca chng trình, gi là Objects sao cho mi b phn có th t lo liu công tác ca nó ging nh mt ngi thu ngoài đi vy. Chc có l bn s hi th thì các Sub hay Function mà bn đã tng vit đ x lý tng giai đon trong chng trình có th đm trách vai trò ca mt thu không? Ngi thu chng nhng có th làm đc công tác (Subs và Functions) gì mà còn chu trách nhim luôn c mi th vt dng cn thit (data) cho vic y na. Có mt cách đnh ngha khác cho Object là mt Object gm có data structure và các Subs/Functions làm vic trên các data y. Thông thng, khi ta dùng Objects ít khi giám th chúng, ngc li nu khi có s c gì thì ta mun chúng báo cáo cho ta bit. Trong VB6, các Forms, Controls hay ActiveX là nhng Objects mà ta vn dùng lâu nay. Ly thí d nh Listbox. Mt Listbox t qun lý các items hin th bên trong nó. Ta bit listbox List1 đang có bao nhiêu items bng cách hi List1.ListCount. Ta bit item nào va mi đc selected bng cách hi List1.ListIndex. Ta thêm mt item vào listbox bng cách T H C VISUALBASIC 6.0 - PH N II 4 gi method AddItem ca List1, v.v Nói cho đúng ra, Object là mt thc th ca mt Class. Nu Listbox là mt Class thì List1, List2 là các thc th ca Listbox. Cng ging nh Bà T Cháo Lòng và Dì Sáu Bánh Tm là các thc th ca Class u Bp. Ngay c mt form tên frmMyForm mà ta vit trong VB6 chng hn, nó cng là mt Class. Thng thng ta dùng thng frmMyForm nh sau: frmMyForm.Show Trong trng hp ny tht ra frmMyForm tuy là mt Class nhng đc dùng y nh mt Object. Ch nu mun, ta có th to ra hai, ba Objects ca Class frmMyForm cùng mt 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à nhng Objects ca Class frmMyForm. Sau đó ta làm nên (instantiate) các Objects firstForm và secondForm bng statements Set . = New . firstForm và secondForm còn đc gi là các instances ca Class frmMyForm. Class ging nh cái khuôn, còn Objects ging nh nhng cái bánh làm t khuôn y. Chc bn đã đ ý thy trong VB6 t dùng hai t Class và Object ln ln nhau. u ny cng không quan trng, min là bn nm vng ý ngha ca chúng. VB6 có ym tr Class mà ta có th trin khai và instantiate các Objects ca nó khi dùng. Mt Class trong VB6 có cha data riêng ca nó, có nhng Subs và Functions mà ta có th gi. Ngoài ra Class còn có th Raise Events, tc là báo cho ta bit khi chuyn gì xãy ra bên trong nó. Cng ging nh Event Click ca CommandButton, khi User clicks lên button thì nó Raise Event Click đ cho ta x lý trong Sub myCommandButton_Click(), chng hn. Classtrong VB6 không có h tr Visual components, tc là không có cha nhng controls nh TextBox, Label .v.v Tuy nhiên, ta có th ly nhng control có sn t bên ngoài ri đa cho Object ca Class dùng. T H C VISUALBASIC 6.0 - PH N II 5 Bây gi chúng ta hãy bt đu vit mt Class. Bn hãy m mt Project mi loi Standard EXE Visual Basic. Sau đó dùng Menu Command chn Add Class Module: Khi Add Class Module dialog hin ra chn Class Module và click Open. Bn s thy m ra mt khung trng và Project Explorer vi Properties Window. Trong Properties Window, hãy sa Name property ca Class thành clsBox nh di đây: T H C VISUALBASIC 6.0 - PH N II 6 K đó đánh vào nhng dòng code di đâ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 VISUALBASIC 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 mt Box t clsBox. Mi Box có ta đ (X,Y) và kích thc chiu rng và chiu cao (width, height) ca nó. Tht ra ta có th dùng Public statement đ declare các bin X, Y, Width và Height. Nhng đây ta c ý declare chúng là Private, di dng mX, mY, mWidth và mHeight. Khi ta mun thay đi các tr s ca chúng, ta s dùng cùng mt cách vit code nh bình thng (thí d: myBox.X = 80 ). Nhng khi chng trình x lý assignment statement y, nó s execute mt loi method (ging nh Sub) gi là Property Let X (vValue). Ta thy đây vValue đc assigned cho mX (i.e. mX = vValue ), cái Private variable ca X. Nh th công vic ny cng chng khác gì sa đi mt Public variable X. Tuy nhiên, đây ta có th vit thêm code trong Property Let X đ nó làm gì cng đc. Bn có nh trong khi thit k mt Label, mi ln bn dùng Property Window đ edit Font size, forcolor hay backcolor thì chng nhng các properties y ca Label thay đi, mà kt qu ca s thay đi đc có hiu lc ngay lp tc, ngha là Label đc hin th tr li vi tr s mi ca property. ó là vì trong method Property có c code bo Label redisplay. Ngc li, khi ta dùng property X ca Object myBox, không phi ta ch đc tr s thôi mà còn execute c cái method Property Get X. Nói tóm li, Property cho ta c hi đ execute mt method mi khi User đc hay vit tr s variable y. Thí d nh nu ta mun kim soát đ ch chp nhn tr s ta đ X mi khi nó không phi là s âm. Ta s sa Property Let X li nh sau: T H C VISUALBASIC 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. Nu mun mt Property là Read Only thì ta không cung cp Property Let. Nu mun mt Property là Write Only thì ta không cung cp Property Get. Ngoài ra nu làm vic vi Object, thay vì Data type thông thng, thì ta phi dùng Property Set, thay vì Property Let. Thí d ta cho clsBox mt Property mi, gi là Font dùng object ca class stdFont ca VB6. Trong clsBox ta declare mt Private variable mFont và vit mt 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 ca myBox (thuc 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 cng v mt box nh DrawBox, nhng nó dùng BackColor ca màn nh (canvas), nên coi nh xóa cái box có sn. Do đó, nu mun, bn có th sa Sub DrawBox li mt chút đ nhn mt 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 VISUALBASIC 6.0 - PH N II 9 Trong thí d trên, Optional parameter fColor đc tested bng function IsMissing. Nu fColor là BackColor ca canvas thì ta s có hiu qu ca ClearBox. Trong form chính ca chng trình dùng đ test clsBox, mi khi ta refer đn mt object thuc class clsBox, IDE Intellisense s hin th các Properties và Subs/Functions ca clsBox nh trong hình di đây: Trong chng trình ny, mi khi ta click nút Draw thì mt Box đc instantiate, cho ta đ X,Y và kích thc Width, Height, ri đc v ra ngay trên form. Ch Me trong code nói đn chính cái form frmClass. T H C VISUALBASIC 6.0 - PH N II 10 cho chng trình thú v hn, khi user clicks nút Animate, ta s cho mt box màu đ chy t trái qua phi. Khi user clicks nút Two Boxes ta s v hai boxes, hp trong màu xanh, hp ngoài màu đ, và cho chúng chy t trái sang phi. đây ta biu din cho thy mình mun instantiate bao nhiêu boxes t clsBox cng đc, và d nhiên mi box có mt b properties vi giá tr riêng ca nó. Ta có th lp trình đ cho Object báo cáo program ch ca nó khi có mt bin c (Event) xãy ra bên trong Class. Ta th declare mt Event tên Draw trong clsBox, và vit code đ mi khi Sub DrawBox executes thì Class s Raise mt 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 VISUALBASIC 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 VISUALBASIC 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 VISUALBASIC 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 VISUALBASIC 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 VISUALBASIC 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 VISUALBASIC 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 bt đu vit mt Class. Bn hãy m mt Project mi loi Standard EXE Visual Basic. Sau đó. I) 56 T H C VISUAL BASIC 6.0 - PH N II 2 Chng Mt - T to Object T trc đn gi, ta lp trình VB6