You are on page 1of 160

Y BAN NHN DN THNH PH H NI

S BU CHNH VIN THNG H NI

GIO TRNH
VISUAL BASIC 6 C BN
(M s gio trnh: 1NL, 2NL3)

H NI. 2005

LI M U
Ngn ng lp trnh Visual Basic ngy cng tr nn ph bin, c rt nhiu ngi quan tm ti. Trong vng my nm tr li y bt u xut hin kh nhiu sch vit v ngn ng ny to iu kin cho chng ta tm hiu, theo ti d on trong vi nm ti n s thng dng nh Word, Excel vy. Cch thc lp trnh trong ngn ng ny rt gn gi vi Windows (bn s hiu Windows su sc hn khi lp trnh bng ngn ng ny). Nu bn hc Microsoft Access th ng nn b qua ngn ng lp trnh thn tc" ny. Mc d chng trnh c vit ra chy khng hiu qu bng nhng ngn ng khc nhng vi n bn c th to ra mt ng dng Windows nhanh v d dng nh ... nu mt gi m n lin" lc ny vn hiu qu c th tm cho qua. Ti sao chn Visual Basic 6? Ta chn Visual Basic lm ngn ng lp trnh v mt s l do sau: 1. D hc C l Basic l ngn ng d hc nht. Vn phm v t ng ca Visual Basic ging i s nn quen thuc v d nh. N khng dng nhng du hiu hay cch tnh ton khc thng i hi ta phi hc thm mt quy c mi v k hiu mt vic lm g. VB tng i d tnh v data types. V d khi ta cho mt Text String variable mt gi tr mi t mt Integer variable, VB s bin i s ra Text String cch t ng. D d dng, VB cung cp phng tin ta c th dng n ci t cho bt c mc ch g, t database n Real-time hay Web. So vi C++ hay Delphi, Visual Basic d dng v d hc hn, v n khng i hi ta phi hiu thu o mt l thuyt g trc khi dng. Ni tm li, phn ln nhng nim kh hiu v rc ri trong l thuyt ngn ng lp trnh u c du kn. 2. Thch hp cho MS Windows VB gm c ngn ng Basic v cc b phn hnh (visual components) cho ta lp trnh trong khung cnh MSWindows. Vi VB hu nh ta c th lm mi chuyn trong MSWindows. V VB6 khng h tr tnh Tha k (Inheritance) v a dng (Polymorphism) ca phng php thit k hng i tng (Object Oriented Design methodology - OOD) nn n khng c coi l mt ngn ng lp trnh OOD t nhin. Tuy nhin ni chung ta vn tha hng nhng li ch ca OOD khi dng cc Components v Collection. V

du b gii hn cht nh ta vn vit c Class, ActiveX. Do VB6 vn thch hp cho nhng d n ln vi nhiu ngi lm. 3. Tin dng cho MS Office 2000 v Web Theo chin lc ca Microsoft, Visual Basic l ngn ng dn tt c cc b phn lin h lm thnh nhng d liu chnh nh Winword,Excel, Access, Powerpoint, Outlook trong MSOffice2000. ng ra, version VB dng cho MSOffice2000 c gi l Visual Basic for Application (VBA). lp trnh trn Web th c VBScript, mt loi VB ch dng mt data type duy nht l Variant cho mi variables v b gii hn ch dng c nhng ti nguyn ca Model n chy bn trong (nh Browser, Active Server Page .v.v..) ch khng dng c mi ti nguyn ca Operating System nh trong trng hp ca VB. 4. Theo Microsoft V Microsoft s cn hin hu lu di, m VB l ngn ng lp trnh ng dng (Application Programming Lamguage) chnh ca Microsoft trong vn phng hay trn Web, nn th trng s cn nhiu lp trnh vin kinh nghim v VB. Do vi kin thc v kinh nghim VB6 s c ch trong cng vic hn. Tc gi rt mong nhn c s gp t bn c Xin chn thnh cm n.

- Tn mn hc: VISUAL BASIC 6 C BN. - M s mn hc: 1NL, 2NL3. - Thi gian: L thuyt v thc hnh 45T - Mc tiu: Cung cp cho hc vin cc kin thc c bn lin quan n ngn ng Visual Basic 6.0. - Nhng kin thc cn phi c trang b trc khi hc: Kin thc c bn v lp trnh v lp trnh hng i tng - Ni dung mn hc: Chng I: Chng II: Chng III: Chng IV: Chng V: Chng VI: Chng VII: GII THIU V VISUAL BASIC 6 C S LP TRNH TRONG VISUAL BASIC 6 MT S CONTROL C S TO MENU CHO NG DNG X L LI TRONG NG DNG LU V LY D LIU T FILE XY DNG HELP CHO NG DNG

- i tng hc: Nhng ngi bt u lp trnh Visual Basic trn Windows. - Ngi bin son: Khoa Cng ngh thng tin, Trng i hc Cng ngh, i hc Quc gia H ni.

MC LC LI M U..1
I- Visual Basic l g? ............................................................................................................8 II- Cc phin bn Visual Basic 6..........................................................................................9 III- I.3 - Ci t VB6...........................................................................................................10 IV- B sung v xa cc thnh phn VB.............................................................................10 V- Mi trng pht trin tch hp (IDE) ca VB6............................................................11 V.1- Menu Bar..................................................................................................................13 V.2- Toolbars (Debug, Edit, Form Editor, Standard) ......................................................14 V.3- Toolbox.....................................................................................................................15 V.4- Project Explorer........................................................................................................16 V.5- Ca s Properties......................................................................................................16 V.6- Form Layout.............................................................................................................17 V.7- Form Designer..........................................................................................................17 V.8- Immediate Window..................................................................................................18 V.9- View Code button.....................................................................................................18 V.10- View Form button...................................................................................................19 V.11- Nhn tr gip trong khi ang lm vic...................................................................19 V.12- Tr gip theo ng cnh (Context Sensitive Help)..................................................20 V.13- Truy cp trang Web ca Microsoft.........................................................................21 VI- Bi tp...........................................................................................................................22

Chng II- C S LP TRNH TRONG VISUAL BASIC 6.....................23


I- Mt s Khi nim c s...................................................................................................23 I.1- Cu trc chng trnh VB..........................................................................................23 I.2- Khi nim v chng trnh hng s kin.................................................................23 II- Cc Module m lnh trong Visual Basic......................................................................24 II.1- Module Form............................................................................................................24 II.2- Module Standard.......................................................................................................26 II.3- Module Class............................................................................................................27 III- S dng b son tho lnh (Code Editor)..................................................................27 IV- Bin hng v cc kiu d liu......................................................................................29 IV.1- Cc kiu d liu.......................................................................................................29 IV.2- Bin.........................................................................................................................37 IV.3- Phm vi ca bin.....................................................................................................40 IV.4- Mt s vn khi s dng bin v hng.................................................................43 IV.5- Hng........................................................................................................................46 IV.6- Phm vi hng s do ngi dng nh ngha............................................................47 V- Cc ton t......................................................................................................................47 VI- Chuyn i kiu d liu................................................................................................48 VII- Cc cu trc iu khin..............................................................................................49 VII.1- Cu trc tun t......................................................................................................50 VII.2- Cu trc r nhnh...................................................................................................50 VII.3- Cc Cu trc lp.....................................................................................................54 VII.4- Lm vic vi cu trc iu khin...........................................................................59

VIII- D liu kiu mng (Arrays) .....................................................................................61 VIII.1- Khi nim ............................................................................................................61 VIII.2- Khai bo mng.....................................................................................................61 VIII.3- Mng ng............................................................................................................66 IX- nh ngha kiu mi.....................................................................................................67 X- C bn v Hm v th tc..............................................................................................68 X.1- Khai bo hm v th tc...........................................................................................68 X.2- To mt hm/th tc chung:.....................................................................................69 X.3- Gi thc hin th tc/hm........................................................................................69 X.4- Gi hm/th tc t Module khc..............................................................................69 X.5- Truyn tham s cho hm/th tc:.............................................................................70 X.6- Truyn tham s bng gi tr ....................................................................................70 X.7- Truyn tham s bng tham chiu .............................................................................70 X.8- S dng cc tham s tu chn..................................................................................71 X.9- t gi tr mc nh cho tham s tu chn...............................................................72 X.10- S dng s tham vi s lng khng nh trc....................................................72

Chng III- MT S CONTROL C S.....................................................74


I- Khi nim Controls v cc s kin? ..............................................................................74 II- Mt s Control thng dng............................................................................................77 II.1- Nt lnh (Command button).....................................................................................77 II.2- Nhn (Label).............................................................................................................78 II.3- Text box....................................................................................................................80 II.4- Check box.................................................................................................................83 II.5- Option Button v nhm Option Button.....................................................................85 II.6- To nhm Option Button..........................................................................................87 II.7- Cch nhm cc Control trong mt Frame.................................................................87 II.8- i tng cha cc Control......................................................................................88 II.9- V d chng trnh v Options.................................................................................88 II.10- List box v Combo box...........................................................................................89

Chng IV- TO MENU CHO NG DNG..............................................106


I- H thng menu..............................................................................................................106 II- S Dng Menu.............................................................................................................107 III- Menu Editor - Cng c Xy dng menu...................................................................107 III.1- Thm phm g tt vo Menu..................................................................................111 III.2- t thuc tnh cho Menu.......................................................................................113 IV- Pop-up Menu...............................................................................................................113 IV.1- To Pop-Up Menu.................................................................................................115 V- Cha thit lp ca menu trong Registry......................................................................115 VI- V d v Menu.............................................................................................................118 VI.1- Separator Line (dng ngn cch) trong Menu.......................................................119 VI.2- Thuc tnh Checked...............................................................................................120

Chng V- X L LI TRONG NG DNG...........................................121


I- Bt cc bin khng khai bo bng Option Explicit .....................................................121 II- Kim tra cc on m bng Breakpoint (im dng).................................................123
6

III- Gim st cc gi tr bin bng Watch .......................................................................124 III.1- Gim st cc gi tr bin bng Add Watch............................................................124 III.2- Kim tra tng dng lnh bng Step Into v Step Over..........................................125 III.3- Ngng ti cc dng chn trc bng Run to Cursor.............................................127 IV- To trnh x l li.......................................................................................................127 V- i tng li Err v to trnh x l li........................................................................130 V.1- Cch tm s hiu ca mt li..................................................................................130 V.2- Ch th by x l li................................................................................................130 V.3- Khung th tc/hm c x l li..............................................................................131 VI- Bi tp..........................................................................................................................132

Chng VI- LU V LY D LIU T FILE.........................................134


I- Ti sao phi lu d liu c nh...................................................................................134 II- S dng file lu tr v ly d liu.........................................................................134 III- M file vi lnh Open.................................................................................................135 IV- Ly d liu t file vi lnh Input...............................................................................138 V- c / Ghi file nh .......................................................................................................140 VI- Lu v ly d liu vi cc hm ca VB vi Registry................................................141 VI.1- Ly gi tr vi hm GetSetting()...........................................................................142 VI.2- Lu gi tr vo Registry vi lnh SaveSetting......................................................143 VI.3- Ly mng gi tr Register vi GetAllSettings()....................................................143 VI.4- Xo mt kho vi lnh DeleteSetting...................................................................144 VII- Bi tp........................................................................................................................144

Chng VII- XY DNG HELP CHO NG DNG.................................145


I- B sung h tr Help.......................................................................................................145 I.1- Thuc tnh HelpFile.................................................................................................145 I.2- Thuc tnh HelpContextID.......................................................................................146 II- B sung h tr What's This Help................................................................................146 III- Phn phi Help vi ng dng....................................................................................147 III.1- Phn phi WinHelp...............................................................................................147 III.2- Phn phi HTML Help..........................................................................................148 IV- S dng Help Workshop.............................................................................................148 IV.1- To Tp help..........................................................................................................150 IV.2- To mt RTF tp help n gin............................................................................152 IV.3- Bin dch mt RTF file thnh mt file .hlp...........................................................153 IV.4- Bin dch mt RTF file thnh mt HLP file..........................................................154 V- Gn cc Tp help vo ng dng..................................................................................154 V.1- Lin kt tp help khi thit k .................................................................................154 V.2- Lin kt tp help khi chy.......................................................................................154 VI- To Context-Sensitive Help........................................................................................155 VII- Bi tp........................................................................................................................158

Chng I- GII THIU V VISUAL BASIC 6 Ni dung

Gii thiu Visual Basic l g? Cc phin bn khc nhau ca VB Cch ci t VB6 Tm kim tr gip khi s dng VB6

Micrsoft Visual Basic (vit tt l VB) l cch d dng nht v nhanh nht xy dng mt chng trnh ng dng chy trn nn Microsoft Windows. Cho d bn l chuyn nghip hay mi m i vi chng trnh Windows, VB cung cp sn mt tp y cc cng c lm nhanh, n gin qu trnh pht trin ng dng cho MSWindows. I- Visual Basic l g? Visual ch cch to giao din ngi dng ho (GUI graphics user interface) mt cch trc quan. Thay v phi vit rt nhiu dng m lnh m t hnh dng v v tr ca cc phn t to nn giao din, bn ch cn t nhng i tng c xy dng sn ln mn hnh (nh cch v mt bc tranh bng chng trnh Paint). Basic ch ti ngn ng lp trnh BASIC (BeginnerWindows AllPurpose Symbolic Instruction Code), mt trong nhng ngn ng lp trnh ni ting. VB pht trin t ngn ng BASIC v hin cha rt nhiu cu lnh, hm, t kho, m nhiu trong s c lin quan trc tip ti GUI ca Windows. Ngi mi lp trnh c th to nhng chng trnh hu ch bng cch hc s dng mt s t cc cu lnh. Cn nhng ngi lp trnh chuyn nghip c th s dng VB thc hin bt k cng vic no m cc ngn ng lp trnh cho Windows khc c th lm c. Visual Basic c ra i t MSBasic, do Bill Gates vit t thi dng cho my tnh 8 bits 8080 hay Z80. Hin nay n cha n hng trm cu lnh (Commands), hm (Functions) v t kha (Keywords). Rt nhiu Commands, Functions lin h trc tip n MSWindows GUI. Nhng ngi mi bt u c th vit chng trnh bng cch hc mt vi Commands, Functions v Keywords. Kh nng ca ngn ng ny cho php nhng ngi chuyn nghip hon thnh bt k iu g nh s dng ngn ng lp trnh MSWindows no khc.

Ngi mang li phn "Visual" cho VB l ng Alan Cooper. ng gi mi trng hot ng ca Basic trong mt phm vi d hiu, d dng, khng cn phi ch n s tinh xo ca MSWindows, nhng vn dng cc chc nng ca MSWindows mt cch hiu qu. Do , nhiu ngi xem ng Alan Cooper l cha gi ca Visual Basic. Visual Basic cn c hai dng khc: Visual Basic for Application (VBA) v VBScript. VBA l ngn ng nm pha sau cc chng trnh Word, Excel, MSAccess, MSProject, .v.v.. cn gi l Macros. Dng VBA trong MSOffice, ta c th lm tng chc nng bng cch t ng ha cc chng trnh. VBScript c dng cho Internet v cho chnh h iu hnh. D cho mc ch ca bn l to mt tin ch nh cho ring bn, trong mt nhm lm vic ca bn, trong mt cng ty ln, hay cn phn b chng trnh ng dng rng ri trn th gii qua Internet, VB6 cng s c cc cng c lp trnh m bn cn thit. VB c sn mt tp cc cng c cho php xy dng cc ng dng. Cc cng c bao gm: Cng c gip thao tc vi c s d liu (CSDL), to cc ng dng u-cui hay cc b phn phn mm chy trn my ch. Cc cng c ny cho php thao tc vi khun dng d liu ca hu ht cc h qun tr CSDL ni ting (Microsoft (MS) SQL server, Oracle, ...) mt cch trc tip hoc gin tip. Cng ngh ActiveX cho php chng ta s dng nhng chc nng c sn ca cc chng trnh khc nh MS Word, MS Excel, ... Chng ta thm ch cn c th t ng ho cc ng dng v cc i tng c to ra. Cc cng c gip d dng gip truy nhp d liu Internet ngay t trong ng dng ca bn, cng nh to cc ng dng cung cp dch v trn Internet. Chng trnh to ra bng VB l chng trnh *.exe s dng My o Visual Basic (Visual Basic Machine) c th d dng c phn phi v ci t. II- Cc phin bn Visual Basic 6

C ba phin bn VB6: Learning, Professional v Enterprise. Chng ta hy b qua phin bn Learning. Bn c th dng phin bn Professional hay Enterprise. Phin bn Professional cung cp y nhng g bn cn hc v trin khai mt chng trnh VB6, nht l cc control ActiveX, nhng b phn lp trnh tin ch v rt hu dng cho cc chng trnh ng dng (application programs) ca bn trong tng lai. Ngoi a CD chnh ca VB6, ti liu km theo gm c sch Visual Studio Professional Features v hai a CD Microsoft Developer Network (MSDN). Phin bn Enterprise l phin bn Professional cng thm cc cng c Back Office chng hn nh SQL Server, Microsoft Transaction Server, Internet InFormation Server. III- I.3 - Ci t VB6 ci t VB6, my tnh ca bn cn phi c: - Mt a CD. - Ti thiu 32 MB RAM. - a cng vi dung lng 2 GB. - CPU Pentium II. - Khi cho a VB6 vo a CD, VB6 s t khi ng hin th menu cho bn chn nhng th g cn ci t, hy chn Install Visual Basic 6.0 ci VB6. - Ngoi tr cc tp ca h iu hnh trong th mc \Os, cc tp trong a Compact u khng b nn. V th, bn c th s dng chng trc tip t a. V d, c nhiu cng c v thnh phn trong th mc \Tools c th c ci t trc tip t CD. Ngoi ra, bn c th chy Setup khi no cn thit. V d, bn c th chy Setup ci t li Visual Basic trong th mc khc, hoc ci t thm bt cc phn ca VB6. Nu v l do g m h thng khng ci t cc a Compact MSDN (bn s khm ph ra iu ny khi thy Help khng c mt lc chy VB6), bn c th ci t chng trc tip t a s 1 ca b MSDN. IV- B sung v xa cc thnh phn VB

10

Sau khi VB6 c ci t, bn vn c th ci b sung thm cc thnh phn cn thiu theo cc bc nh m t sau: 1. Cho a VB6 vo CD. 2. 3. 4. 5. Nu menu khng t ng hin ln th chy chng trnh Setup c sn trong th mc gc trn a Compact. Chn nt Custom trong hp thoi (dialog) Microsoft Visual Basic 6.0 Setup. Chn hay xa cc thnh phn bng cch Check hay unCheck cc hp danh sch Options ca hp thoi Custom. Thc hin cc ch dn Setup trn mn hnh.

Ghi ch: Trong lc ci VB6, nh chn nh nu khng bn s thiu mt s hnh nh nh icons, bitmaps v.v... V- Mi trng pht trin tch hp (IDE) ca VB6 Khi khi ng VB6 bn s thy m ra nhiu ca s (windows), scrollbars, v.v.. v trn cng l New Project dialog. y VB6 cho bn chn mt trong nhiu loi d n (project). Chn Standard EXE. Mt lt sau trn mn hnh s hin ra giao din ca mi trng pht trin tch hp (Integrated Development Environment IDE ) ging nh sau:

11

Hnh I.1 - Bt u phin lm vic vi Visual Basic 6

12

IDE ca VB6 bao gm cc yu t sau

Hnh I.2 - Mi trng tch hp (IDE) Visual Basic 6 V.1- Menu Bar Cha y cc lnh m bn s dng lm vic vi VB6, k c cc menu truy cp cc chc nng c bit dnh cho vic lp trnh chng hn nh Project, Format, hoc Debug. Trong Menu Add-Ins c Add-Ins Manager cho php bn gn thm nhng menu con nhim chy cc chng trnh li ch cho vic lp trnh.

Hnh I.3 - Menu Add-In manager Trong Add-Ins Manager dialog bn chn mt Add-In ri Check mt hay nhiu hp trong khung Load behavior:
13

Hnh I.4 - Minh ho Add-In manager V.2- Toolbars (Debug, Edit, Form Editor, Standard) Cc Toolbars c hnh cc icons cho php bn bm thc hin cng vic tng ng vi dng mt menu command, nhng nhanh v tin hn. Bn dng lnh trn menu View->Toolbars (bm ln lnh View trn menu cho menu con hin ra ri bm Toolbars) lm cho cc toolbars hin ra hay bin mt i. Bn c th thay i v tr mt toolbar bng cch nm vo hai gch vertical nm bn tri toolbar ri di toolbar i ch khc (nm y ngha l con tr ca chut ln ch chm trong hnh pha di ri bm xung v gi nt bn tri ca mouse, trong khi ko pointer i ni khc).

Ngoi ra bn cng c th sa i cc toolbars theo thch bng cch dng lnh trn menu View->Toolbars->Customize...

14

Hnh I.5 - Bt hay tt cc thanh cng c V.3- Toolbox

Hnh I.6 - Hp cng c


15

y l hp cng c vi cc cng c, gi l Controls, m bn c th t ln cc Form trong khi thit k chng trnh. Nu Toolbox bin mt, bn c th lm cho n hin th tr li bng cch dng lnh menu View->Toolbox. Bn c th lm cho toolbox c nhiu Controls hn bng cch chn Components... t menu context (chn Toolbox ri bm nt phi ca mouse display context menu) hay dng menu command Project | Components. Ngoi vic trnh by Toolbox mc nh, bn c th to cch trnh by khc bng cch chn Add Tab... t context menu v b sung cc control cho tab t kt qu. V.4- Project Explorer S lit k cc Forms v cc modules trong project hin hnh ca bn. Mt project l s tp hp cc tp m bn s dng to mt trnh ng dng. Tc l, trong VB6, khi ni vit mt chng trnh c ngha l trin khai mt d n (project). V.5- Ca s Properties Ca s ny lit k cc c tnh ca cc Forms hoc Controls c chn. Mt property l mt c tnh ca mt i tng chng hn nh size, caption, hoc color. Khi bn sa i mt property bn s thy hiu qu ngay lp tc, v d thay i property Font ca mt Label s thy Label y c display bng Font ch mi. Khi bn chn mt Property ca control hay Form trong Properties window, pha bn phi ch value ca property c mt nt vi ba du chm () hay mt tam gic cha xung. Bm vo hin th mt hp thoi (dialog) cho bn chn gi tr. V d di y l dialog chn mu cho property ForeColor ca control Label1.

16

Hnh I.7 - Ca s Properties V.6- Form Layout Bn dng Form Layout chnh v tr ca cc Forms khi Form hin ra ln u lc chng trnh chy. Dng context command Resolution Guides thy nu dng mt mn hnh vi phn gii (resolution) t hn, v d nh 640 X 480, th n s nh nh th no.

Hnh I.7 - Formlayout V.7- Form Designer Dng thit k giao din lp trnh. Mi Form trong trnh ng dng ca bn c designer Form ring ca n. Khi bn m to ht c (Maximize) mt Form designer, n s chim ton b khng gian lm vic. Mun lm cho n
17

tr li c bnh thng v ng thi thy cc Form designers khc, bm nt Restore Window gc bn phi, pha trn.

Hnh I.8 - Form designer V.8- Immediate Window Dng g ri (debug) chng trnh ca bn. Bn c th hin th d liu trong khi chy chng trnh ng dng. Khi chng trnh ang tm ngng mt break point (im dng), bn c th thay i gi tr cc bin hay thc hin mt dng chng trnh. V.9- View Code button Bm ln nt ny xem m lnh ca mt Form m bn chn. Ca s m lnh ging nh di y:

Hnh I.9 - Ca s Code (m lnh)

18

Trong ca s m lnh bn c th chn display tt c Sub ca m lnh cng mt lc nh trong hnh hay display mi ln ch mt Sub bng cch bm button c hnh ba dng nm gc bn tri pha di. V.10- View Form button Bm ln nt ny xem Form ca mt Form m bn chn. Ghi ch: Nhiu ca s trong IDE nh Toolbars, Toolbox, Project Explorer .v.v..c th c t nhiu v tr khc nhau v c th dng floating hoc docked (gn vi ca s chnh ca VB6 trong mi trng pht trin tch hp). Bn c th thay i v tr chng bng cch bm chut vo Title Bar ca window ri di chuyn chut. Bn cng c th m rng hay lm nh mt ca s bng cch ko mt cnh ngang hay dc ca n. Trong hnh di y, Properties Window v Form Layout c ko ra ngoi cho floating.

Hnh I.10 - View form V.11- Nhn tr gip trong khi ang lm vic Trong khi lp trnh bn c th cn tm hiu cc thng tin lin quan n cc Commands, Functions .v.v.. ca VB6. Bn c th khi ng Microsoft Developer Network->MSDN Library Visual Studio 6.0 t nt Start, hay bm Help->Contents t Menu Bar ca VB6, hay chn mt keyword (highlight keyword) ri n F1 c phn hng dn (Help).

19

Hnh I.11 - Ca s tra cu Ni dung phn hng dn bao gm nhiu c im c thit k thc hin vic tm kim thng tin d dng hn. Bn c th xem phn hng dn ny nh mt quyn sch. Quyn sch ny c phn ch mc (index), t kha (keyword) v cng c tm kim tm thng tin nhanh hn. V d, vic g ri thng tin bt ngun t nhiu thuc tnh khc nhau ph thuc vo loi d n (project) m bn ang lm vic. Cc lin kt c m t trong phn ny thc hin vic tm kim d dng hn. Ngoi ra, bn cng c th bm phn See Also xem thm cc ch c lin quan. V.12- Tr gip theo ng cnh (Context Sensitive Help) Nhiu phn ca VB6 l context sensitive, c ngha l khi ta cn tr gip ch cn n nt F1 (hoc nh du cm t cn xem hng dn ri nhn F1) l nhn c thng tin hng dn lin quan n ng cnh hin ti. Bn c th nhn F1 t bt k phn context sensitive no ca giao din VB6 hin th thng tin hng dn v phn . Cc phn context sensitive l: Cc ca s ca VB6 nh Properties, Code .v.v.. Cc control trong Toolbox. Cc i tng trn mt Form hoc i tng ti liu. Cc c tnh trong ca s Properties.
20

Cc t kha ca VB6 Cc thng bo li (error messages) Ngoi ra, trong phn hng dn thng c v d. Bn bm ln ch Example hin th mt v d minh ha cch dng mt function hay property. V.13- Truy cp trang Web ca Microsoft Web site ca Microsoft cha nhiu thng tin cp nht cho nhng ngi lp trnh VB6. Trang ch Visual Basic t ti URL: http://www.microsoft.com/vbasic/. Thng tin c sn ti a ch ny bao gm: Cp nht cc c tnh mi, cc phin bn sn phm, cc sn phm lin h, cc seminar v cc hot ng (event) c bit. Thng tin b sung trn cc c tnh VB6 cha trong cc bi vit gi l White Papers, cc mo (tips) v cc trnh tr gio, ngun o to. Sn phm mi ti xung (download) bao gm s cp nht n cc tp chng trnh, cc cp nht tr gip, cc trnh iu khin, v cc tp lin h khc ca VB6. truy cp trang web ca Microsoft, t menu Help chn Microsoft on the Web ri chn menu con nh di y.

Hnh I.12 - Truy cp Web Ghi ch: Mt s ni dung trn Web site ca Microsoft c ti u ha dnh cho Microsoft Internet Explorer v khng th hin th y trong mt b trnh duyt (browser) khc. Do bn nn ch dng Internet Explorer lm trnh duyt trn my bn m thi.
21

VI- Bi tp Bi 1: Ci t Visual Basic: Ci y VB Ci y MSDN cho VB Ci y v d mu (Samples) Chy MSDN Tm hiu ti liu v VB trn a qua mc Contents:

Bi 2: Thc hnh tm kim tr gip trong VB:

+ Using Visual Basic + Reference + Samples + Nhng im mi trong Visual Basic 6 ... Bi 3: Thc hnh tm kim tr gip trong VB: Chy MSDN Tm hiu ti liu v VB trn a qua mc Index: + Data Types (Tm kim thng tin v kiu d liu qua t kho Data Type) + String (Tm kim thng tin v kiu chui qua t kho String: gii hn di, cc hm lin quan)

22

Chng II- C S LP TRNH TRONG VISUAL BASIC 6 I- Mt s Khi nim c s I.1- Cu trc chng trnh VB Mt chng trnh VB hay chng ta gi l mt d n (Project), gm c:
Mt file d n qun l tt cc thnh phn ca chng trnh (*.vbp).

Mt file cho mi Form (*.frm): ni dung gm m t form & code vit cho

cc s kin.
Mt file dng nh phn cho mi Form cha cc thng tin v Form v cc

Control (*.frx).
C th c 1 file cho mi Module Class (*.cls). C th c 1 file cho mi Module Standard (*.bas). C th c 1 file cho mi ActiveX Control (*.ocx). C th c 1 file ti nguyn (Resource file) (*.res).

I.2- Khi nim v chng trnh hng s kin Mt s kin l 1 hnh ng nhn bit c bi Form v Control. Chng trnh hng-s kin gi on m lnh Basic p ng 1 s kin. Mi Form v Control trong Visual Basic c 1 tp xc nh trc cc s kin. Nu mt trong s nhng s kin xy n v c m lnh gn vi th tc s kin, Visual Basic s gi on lnh . Mc d i tng trong Visual Basic t ng nhn ra tp nh ngha trc cc s kin, lp trnh vin mi l ngi quyt nh cc i tng c p ng hay khng v p ng th no vi 1 s kin c th. Mi s kin c 1 phn m lnh tng ng vi n di dng 1 th tc p ng s kin. iu khin 1 i tng p ng 1 s kin, chng ta cn vit m lnh vi th tc s kin tng ng. Trnh t hot ng ca 1 chng trnh hng- s kin thng nh sau: 1. Chng trnh khi ng, Form c np v hin th. 2. Form hay Control trn Form nhn c 1 s kin tc ng. S kin c th gy ra bi ngi dng (nhn 1 phm, bm chut ), bi h thng, hay trc tip bi m lnh ca Chng ta.
23

3. Nu c phn m lnh tng ng vi th tc s kin, n s c gi thc hin. 4. Chng trnh ch cho s kin k tip. II- Cc Module m lnh trong Visual Basic M lnh trong Visual Basic c lu trong cc Module. C 3 loi Module: Form, Standard, v Class. Chng trnh n gin ch gm 1 form v tt c m lnh ca chng trnh nm trong Module Form. Khi chng trnh phc tp thm, c th c nhiu Form hn, c phn m lnh c th dng chung gia cc Form. trnh trng lp, phn dng chung ny c th c a vo Module tch ring cc Form gi l Module Standard, v chng ta c th s xy dng 1 th vin cc Module cha cc th tc/hm dng chung. Mi Module Standard, Class v Form c th cha:

Phn khai bo (Declarations): Cha khai bo hng s, kiu,...

Phn cc th tc/hm (Procedure/Function): Cha nh ngha cc th tc, hm s. II.1- Module Form Module Form (trong cc tp *.FRM) thng cha cc th tc p ng s kin trn Form, cc th tc/ hm dng trong Form, cc khai bo mc Form v: bin, hng, kiu, th tc bn ngoi. M lnh trong mi Form c dng ring trong Form v i khi m lnh trong 1 Form c th tham chiu ti cc Form khc. V d: chng ta c form n gin nh sau:

Hnh II.1 - V d v form


24

th tc p ng s kin bm chut trn nt lnh Command1 l Private Sub Command1_Click() MsgBox "Chao ban: " & txthoten End Sub chc nng ca n cho php ngi dng nhp h tn vo hp textbox (txthoten) v d l Vu Van Long, sau khi bm nt lnh s hin hp thng bo:

Hnh II.2 - V d thng bo ca chng trnh Vi from trn chng ta c ni dung ca modul form nh sau VERSION 5.00 Begin VB.Form Form1 Caption ClientHeight ClientLeft ClientTop ClientWidth LinkTopic ScaleHeight ScaleWidth = "Form1" = 2835 = 60 = 345 = 4170 = "Form1" = 2835 = 4170 cc thuc tnh ca command1 cc thuc tnh chung ca form (tiu , kch thc,..)

StartUpPosition = 3 'Windows Default Begin VB.CommandButton Command1 Caption Height Left TabIndex Top Width = "Command1" = 375 = 1440 = 2 = 1680 = 1575
25

cc thuc

End Begin VB.TextBox txthoten Height Left TabIndex Top Width End Begin VB.Label Label1 Caption Height Left TabIndex Top Width End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Private Sub Command1_Click() MsgBox "Chao ban: " & txthoten End Sub II.2- Module Standard = "Ho ten" = 375 = 120 = 1 = 480 = 855 = 375 = 1200 = 0 = 480 = 2055

tnh ca txthoten

Cc thuc tnh ca Label1

Th tc s kin bm chut trn Command1

Module Standard (trong cc tp *.BAS) cha th tc / hm v khai bo truy nhp c bi cc module khc trong chng trnh, hay thm ch bi cc chng trnh khc nhau. Chng ta c th thm cc module vo project bng

26

cch bm chut phi trn tn ca Project trong hp Project properties sau chn Add tip theo l Module II.3- Module Class Modules Class (trong cc tp *.CLS) l c s lp trnh hng i tng trong Visual Basic. Chng ta vit m lnh trong Module Class to nhng i tng mi vi nhng thuc tnh v phng thc ring. Thc ra, Form chnh l cc Module Class, ni c th t cc Control v hin th cc ca s Form. III- S dng b son tho lnh (Code Editor) Code Editor ca Visual Basic l mt ca s ni Chng ta vit phn ln m chng trnh. N ging mt trnh son tho c chuyn ho cao vi nhiu tnh nng to thun li cho vic vit m Visual Basic. Mt ca s ring c m cho mi Module Chng ta chn t Project Explorer. M nm trong mi Module c chia thnh cc phn ring cho tng i tng trong Module. Mi Module Form gm: Phn general: Cha phn khai bo dng chung. Phn th tc s kin cho tng i tng. truy nhp ti hoc thm th tc s kin hay mt khai bo chng ta c th chn i tng trong listbox bn tri v cc s kin tng ng trn i tng trong list box bn phi trn ca s Code.

Chn i tng cn vit m

Chn s kin cn vit m ca i tng chn

Hnh II.3 - Chn s kin cho mt i tng


27

Visual Basic c chc nng Auto Code Completion (t hon thin m) gip vit m lnh trong Code Editor c d dng hn, tc l ti thi im c th, n s cho hin danh sch cc thuc tnh hay hm, th tc (phng thc) ca mt i tng ngi lp trnh chn thay v g t bn phm.

Hnh II.4 - Hp chn cho php chn thuc tnh/phng thc chn phn t no , chuyn thanh sng ti , ri nhn TAB.

Hnh II.5 - Tr gip v c php ca Msgbox Ngoi ra, chc nng Bookmarks gip nh du 1 v tr m lnh c th quay li c nhanh chng (Edit | Bookmarks). Qui c vit lnh trong Visual Basic Ni chung trong VB mi lnh c vit trn mt dng, tuy nhin trong mhi trng hp chng ta phi chia mt lnh qu di trn nhiu dng, hoc cng c trng hp cn vit nhiu lnh trn mt dng, hoc cn phi thm cc ch gii trong chng trnh. Chia mt lnh thnh nhiu dng bng cch s dng k t: _
28

V d: dtaTilesOfPublishers.RecordSource = _ "SELECT * FROM Titles, Publishers" _ & "WHERE Publishers.PubId = Titles.PubID" _ & "AND Publishers.State = 'CA'" Trong mt s trng hp cch chia 1 cu lnh ny khng thc hin c: ni cc dng ch gii, ... Ni nhiu lnh vo mt dng Bng cch s dng k t: [ : ] txtMsg.Text = "Hello" : Red = 255 : txtMsg.BackColor = _ Red Thm ch gii vo m lnh Bng cch s dng k t: [ ] ' This is a comment beginning at the left edge of the ' screen. txtMsg.Text = "Hi!" ' Place friendly greeting in ' Text box. IV- Bin hng v cc kiu d liu IV.1- Cc kiu d liu Mc tiu quan trng ca cc chng trnh l bin i, x l d liu, cc ngn ng lp trnh ni chung u phn chia d liu thnh cc kiu d liu khc nhau, mi kiu d liu c nhng c th khc nhau: s nguyn, s thc, xu k t... Cc kiu d liu ny cng c th l kiu chun (kiu c cung cp sn bi ngn ng lp trnh), cng c th l kiu do ngi lp trnh nh ngha ra. i vi mi kiu d liu th cc thng tin quan trng l: tn kiu, min gi tr, kch thc v cc thao tc (ton t) c th thc hin trn . VB6 cung cp mt s kiu chun khc nhau: Boolean, Byte, Integer, Long integer, Single precision, Double precision, String, Date, Currrency, Variant, Object. Sau y chng ta xt ti cc kiu d liu chun. Bin Type Bytes Literal
29

Range

Boolean Byte Integer Long Currency Date Single

Of Suffix Storage 2 1 2 % 4 & 8 8 4

Double Object String Variant

8 4

True, False 0 to 255 -32,768 to 32,767 -2,147,483,648 to 2,147,483,647 -922,337,203,685,477.5808 to @ 922,337,203,685,477.5807 1 January 100 to 31 December 9999 and #&# times from 0:00:00 to 23:59:59 -3.402823E38 to -1.401298E-45 ! 1.401298E-45 to 3.402823E38 -1.79769313486232E308 to -4.94065645841247E-324 # 4.94065645841247E-324 to 4.9769313486232E308 xu k t di thay i c th cha ti 2 t ki t, vi xu i di c nh c th cha ti 64K k t

(Bng B1 : Cc kiu d liu chun ca VB) IV.1.1- Kiu Boolean y l kiu d liu ch c 2 gi tr: True (ng) v False (sai). i vi cc d liu m chng chng ch c hai trng thi l ng hoc sai th chng ta nn dng kiu ny. Thc cht, bn trong VB s dng s 0 cho False v 1 cho True, nhng thc t th mi gi tr s khc 0 u l true IV.1.2- Kiu Byte Kiu byte c b sung vo VB t phin bn 5.0. N c kch thc 1 byte nn ch c th lu cc gi tr nguyn t 0 ti 255 (28 -1). Kiu ny rt hu ch trong trng hp cn tit kim khng gian nh i vi cc s nguyn c gi tr nh. IV.1.3- Kiu Integer Mt phn t kiu nguyn (Integer) c kch thc 2 byte, min gi tr kiu ny c th lu tr l cc s nguyn t -32768 (215) ti 32767 (215-1). S hc s nguyn tuy thao tc nhanh nhng b gii hn trong phm vi ny. Mt cch
30

m bo mt bin kiu nguyn ch lu mt gi tri nguyn l dng k t % cui tn bin ( suffix) IV.1.4- Kiu Long Integer (s nguyn di) Kiu s nguyn di chim 4 byte trong b nh, c th biu din cc gi tr nguyn t - 231(-2,147,483,648 ) ti 231-1( 2,147,483,647). K hiu nh danh cho bin kiu Long l (&), tc l nu sau mt tn bin c k hiu (&) th bin c coi l bin kiu Long Integer. Lu : mc d nh trn chng ta thy, kiu s nguyn di c th lu c gii tr ti khong 2 t, nhng biu thc sau vn c th gy li trn s: Dim d as Long d = 30345 * 100 mc d 30345 * 100 cha vt qua ngng ca s nguyn di, l trong php ton 30345 * 100, c 2 ton hng c xem l s nguyn 2 byte, nn kt qu cng s l s nguyn 2 byte, v nh vy s b trn s. Chng ta c 2 cch n gin trnh li ny nh sau: Dim d as Long d = 30345 d = d * 100 hoc d = 30345& * 100

Khun dng s nguyn: H thng biu din cc s nguyn di dng dy cc bit (s nh phn). Nh chng ta bit, mt bit ch c th biu din c 2 gi tr l 0 v 1. Ta thy vi mt nhm c 2 bit (2 s nh phn) th c th lu c gi tr nh nht khi c 2 bit u bng 0 v ln nht khi c 2 bit bng 1 c ngha l n c th biu din c cc s 0,1,2,3 tc l 22 gi tr khc nhau. Vi s nguyn 1 byte th gi tr n c th lu tr l 0,1,..,255. Tng qut nu kiu d liu c kch thc n bit th c th biu din 2n gi tr khc nhau l: 0,1,..(2n 1).

31

Hnh II.6 - Biu din s nguyn khng du Nhng l trong trng hp tt c cc bit dng biu din gi tr s (cc con s), tc l ta c s nguyn khng du. Nhng s nguyn chng ta cn c th l s m, trong trng hp ny bit cao nht c dng biu din du, nh vy ch cn n-1 bit biu din gi tr. Nu s m th bit du c gi tr =1(du m), ngc li, nu s c gi tr dng th bit du c gi tr =0 (du dng).

Hnh II.7 - Biu din s nguyn c du IV.1.5- Kiu Single (s thc vi chnh xc n) v Double (s thc vi chnh xc kp) Trong bng B1 chng ta thy kiu long v single c cng kch thc, nhng min gi tr ca chng rt khc nhau, l do c cu biu din s khc nhau. Khun dng biu din ca s thc khng ging nh s nguyn. Mt s thc ni chung c biu din theo k php khoa hc gm phn nh tr v phn m.

Hnh II.8 - Biu din s thc Trong gio trnh ny chng ti khng c nh trnh by chi tit nh dng ca s thc. Chnh v khun dng khc m min gi tr ca s thc so vi s nguyn c cng kch thc cng khc. Trong bng B1 trn min gii tr chng ta ni ti gi tr dng ln nht, gi tr m nh nht m s thc c th biu din v gi tr dng/m nh nht/ln cn phn bit c vi 0. V d vi kiu single, gi tr dng ln nht l 3.402823E38 =3.402823*1038 v s dng nh nht c th biu din l 1.401298E-45 = 1.401298 *10-45

32

Tuy nhin, do s ch s trong phn nh tr l gii hn nn s ch s ng tin cy (hay ta ni l s ch s c ngha) cng gii hn vi kiu single l 7 ch s, double l 16 ch s. IV.1.6- Kiu Currency (kiu tin t) Thc ra, y l kiu s m c th 4 ch s sau du chm thp phn v 15 ch s bn tri du chm thp phn, cc php ton s hc s chnh xc trong phm vi ny. IV.1.7- Kiu Date (Thi gian - Ngy v Gi ) C mt loi d liu cc dng cha c ngy, thng v gi, l Date, nhng dng nn (tc l cc gi tr ngay, thng, nm,..c gp chung li). Tuy nhin, ta c th s dng mt s hm ca VB bit cc thnh phn trong . V d ta c th s dng hm Now bit hin thi l ngy no, my gi. Sau ta dng cc hm Day, Month v Year ly ra ngy, thng v nm v d:

Private Sub CmdCheckDate_Click() Dim dDate As Date If IsDate(txtDate.Text) Then ' eg: txtDate = "26/12/01" dDate = CVDate(txtDate.Text) ' convert a Text String to internal Date using Function CVDate ' Day, Month and Year are automatically converted to String MsgBox "Day = " & Day(dDate) & ", Month = " & _ Month(dDate) & ", Year = " & Year(dDate) Else MsgBox "Invalid date. Please try again." End If End Sub VB tng i rng ri i vi vic chng ta m t dng thc ca Date, chng hn nh nu chng ta khng gp gi, pht, giy vo thi gian th n coi l na m (0:0:0), hoc c th s dng dng AM/PM hay dng 24 gi, v d d1 = #January 1, 2000#
33

d2 = #1/1/2004 11:45:30 PM# Thng tin v nh dng in kiu Date mi Chng ta c tham kho thm hm format IV.1.8- Kiu Variant Variant l kiu c th cha Text String, Number, Date, thm ch c mt Array (mt lot nhiu bin cng kiu d liu)- c th ni l kiu khng xc nh r. Nhn thong qua n rt tin dng, nhng khi mt bin kiu variant c dng nhiu ch, trong nhiu tnh hung khc nhau, Chng ta phi thn trng. L do l v n c th cha nhng loi kiu d liu khc nhau, nn khi Chng ta thc hin cc php ton trn cc ton hng c kiu khc nhau, Visual Basic 6 c gng bin i mt trong hai kiu thnh kiu ca ton hng kia lm vic, v nh vy c lc kt qu khng nh chng ta mong i. Nhng ngi lp trnh kinh nghim khng thch lp trnh vi k liu khng uc khai bo r rng. H khng mun v tnh gy ra li. Th rng chng trnh dch bt li nhng trng hp Chng ta v tnh thao tc trn hai ton hng c kiu khc nhau. Cc ngn ng lp trnh xc nh kiu mng (strongly typed languages), chng hn nh Pascal, C++, Java .v.v.. Sau ny nu ta dng .NET th cc ngn ng C#, VB.NET (VB7) u c th trnh c cc li ny. Vic khai bo mt bin Variant cng ging nh khai bo mt bin kiu d liu khc. Ch c iu ta c th bit kiu d liu thc s ang c cha bn trong mt bin Varaint bng cch dng hm VarType nh di y: Private Sub cmdShowDataTypes_Click() Dim sMess As String Dim vVariant As Variant vVariant = "Binh minh tren cao nguyen" ' Assign a String to vVariant sMess = VarType(vVariant) & vbCrLf vVariant = 25 ' Assign an Integer to vVariant sMess = sMess & VarType(vVariant) & vbCrLf vVariant = True ' Assign an Boolean value to vVariant sMess = sMess & VarType(vVariant) & vbCrLf ' Assign an Date to vVariant
34

vVariant = #1/1/2001# ' enclose a Date string with #, instead of " as for normal Text String sMess = sMess & VarType(vVariant) MsgBox sMess End Sub Khi ta bm chut vo nt ShowDataTypes chng trnh s in gi tr ca cc kiu d liu trong mi trng hp nh sau:

Hnh II.9 - Bin varian c th nhn cc kiu d liu khc nhau Sau y l bng lit k nhng gi tr ca kiu d liu thng thng m hm VarTypes tr v: Gi tr VarType 0-vbEmpty 1-vbNull 2-vbInteger 4-vbSingle 7-vbDate 8-vbString 9-vbObject 11-vbBoolean Ch thch Khng c g trong variant Khng c d liu hp l trong variant Variant cha Integer Variant cha Single Variant cha Date/Time Variant cha String Variant cha mt Object Variant cha Boolean

Bng B2 - Gi tr cc kiu d liu thng thng lm vic vi cc loi kiu d liu Chng ta c th dng Select Case nh sau:
35

Private Sub Process_Click() Select Case VarType(vVariant) Case vbString ' ... Case vbBoolean ' ... Case vbInteger ' ... Case vbDate ' ... End Select End Sub IV.1.9- Kiu d liu Ojbect (kiu i tng) Khi nim i tng l mt trong cc khi nim quan trng ca lp trnh hng i tng. i tng l s tru tng ho cc thc th trong th gii thc mang li cho h thng kh nng lu tr thng tin v chnh n (d liu, hot ng), cc thc th c th l 1 i tng vt l hoc l 1 khi nim tru tng. Mi i tng l s bao gi gm cc thnh phn d liu v cc phng thc. Mt i tng cn phi xc nh cc thng tin quan trng sau:
-

nh danh (i vi ngi dng l tn nhng thc cht cc thnh phn d liu cc hnh vi (cc phng thc) giao din ca lp

l a ch)
-

Bin i tng c lu tr thnh a ch 32-bit. a ch ny tham tr ti i tng c th bt k trong chng trnh, hay ti i tng trong chng trnh khc. V d: Dim objDb As Object Set objDb = OpenDatabase("c:\Vb5\Biblio.mdb")

36

IV.2- Bin IV.2.1- Khi nim Bin l nhng ch cha d liu tm thi trong b nh trong, ta dng trong qu trnh x l/ bin i d liu ca chng trnh. Khi ta khai bo mt bin loi d liu g l ta dnh ra mt ch trong b nh cha mt d liu loi y. Nh l ty theo loi d liu ta s cn nhiu hay t b nh, mt Interger ch cn 2 bytes, cn mt Single cn n 4 bytes, trong khi mt String th cn nhiu b nh hn na. IV.2.2- Khai bo bin Nh ni ti trn bin dng lu tr cc gi tr trong qu trnh x l chng trnh. Bin khng c sn trong chng trnh nn mun s dng n cn phi khai bo bng cch s dng t kho Dim hay Private hoc Public. tuy nhin, vi VB6, vic dng bin tng i thoi mi, tc l chng ta c th t tu chn yu cu cc bin cn phi c khai bo trc khi s dng hoc khng bt buc phi khai bo trc bng cch dng Option Explicit trong phn general, hoc nh du chn trong Tools/option/editor/require variable declaration

C php khai bo bin: Public/Private/Dim <Tn bin> [As <Kiu d liu>] Trong : <Tn bin> l mt xu k t (nh danh) do ngi lp trnh t tun theo quy tc v tn ca VB, <Kiu d liu> l tn 1 kiu d liu tn ti. V d: Dim X, Y As Double Trong : - X, Y l tn bin cn khai bo. - Double l kiu ca bin. hoc nh: Private I As Integer Dim Amt As Double Static YourName As String

37

Public BillsPaid As Currency Private I As Integer, Amt As Double IV.2.3- Qui tc t tn Tn th tc, hm, bin, hng phi tun theo qui tc: - Bt u bng k t ch - Khng cha k t phn cch (nh [ . ] hay k t rng), k t khai bo kiu. - Khng di hn 255 k t. Tn ca Control, Forms, Class, v Module khng vt qu 40 k t. - Khng trng vi cc t kho ca ngn ng i vi kiu xu k t, c hai loi l xu k t c di khng xc nh trc (String) v xu k t c di xc nh trc (String * <len>) V d: Dim strS1 As String Dim strS2 As String * 5 strS1 = "aaa" strS2 = "a"

Nh vy strS1 l xu c di khng xc nh trc, di thc s ca n l s k t trong ni dung gn cho bin , cn strS2 l xu c di c nh l 5, chng ta khng th gn cho strS2 qu 5 k t (nu gn s k t t hn 5 th VB s chn thm cc k t trng vo cho 5 k t) Ngoi ra nu kiu bin khng nu r bin s c kiu l Variant. Khi ta khai bo mt bin c xc nh r kiu d liu ta ni bin c khai bo tng minh, trng hp ngc li chng ta ni bin khng khai bo tng minh (hay khai bo khng tng minh) V d: Dim X,Y Dim a as Integer, b, c as Byte Khi : X, Y, c: Kiu Variant

38

Khi Chng ta tm cch cho hai kiu d liu khc nhau lm vic, th d nh lm ton chia mt xu k t bi mt con s th c th b li kiu. Tuy nhin nu xu ch gm nhng ch s th c th VB6 s t ng i kiu ca xu k t ra s trc khi dng n trong mt bi ton. Ngc li, d nhin ta khng th ghp mt con s vo mt Xu k t, nhng VB6 c th convert con s ra mt xu k t ca cc ch s trc khi ghp n vo xu kia. Mc du VB6 rt t nh trong vic on ra nh ca chng ta trong khi coding nhng ta phi thn trng trong cch dng d liu trnh gp phi nhng bt ng. Vn t tn cho Bin rt quan trng. Chng ta nn t tn bin v cc hm, th tc nh th no khi c m chng trnh ta thy d hiu. Thng thng, d nhn din kiu d liu ca mt bin ngi ta gn pha trc tn bin cc tip u ng (prefix) nh str cho String, I cho Integer, s cho Single ..v.v..(xem quy c Hungari) Khi rp nhiu ch ri thnh tn mt bin, thng thng ngi ta lm cho k t u tin ca mi ch thnh ra Hoa (Capital), th d nh TotalSalesOfTheMonth . C mt li khuyn nho nh l ng ngi t tn bin qu di. Khi nh my na chng tn ca mt bin Chng ta c th nh Ctrl-Space IDE nh nt phn cn li ca tn bin, nu khng c s trng hp vi mt tn bin/hm/th tc no khc. Nu cng tc lp trnh ging nh nu n, Chng ta c th ngh n bin nh cc ci r, thau ta cn c vic chun b thc n c tin li. Trc khi bt tay vo cng tc ta xin vi ch nh cho mnh bao nhiu ci r, thau, thng .v.v..( l khai bo bin). Ta mi loi thc n vo mt r hay thau khc nhau, ch khng tht chung vi rau ci (cng nh khng th cng xu k t vi con s). Khi ta b thm mt tri c vo r c th s tri c trong r tng ln 1. Mt lt sau ta ly ra vi tri c dng th s tri c trong r b gim i. Khi khng cn dng na ta b hay ct my tri c cn li ri dp ci r i ch khc. IV.2.4- Quy c Hungari Quy c ny Charles Simonyi xut: Dng tip u ng thng nht t tn cho bin Kiu d liu String Signle Tip u ng str sng
39

Kiu d liu Boolean Double

Tip u ng bln dbl

Long Variant

lng vnt

Integer Currency

int cur

Bng B3 - Quy c Hungari

Tuy nhin y ch l quy c ch khng phi l quy tc, v vy Chng ta dng cng c m khng theo cng c, nhng chng trnh c mch lc, d c chng ta nn theo mt quy c thng nht. IV.3- Phm vi ca bin Phm vi ca bin l vng m lnh m bin c th c s dng. Phm vi s dng bin ty thuc cch khai bo v v tr khai bo bin. Khai bo trong phn General: Bin s dng nh l bin ton cc, c th dng bt c on lnh no trong form. Cc bin khai bo trong mt th tc hoc hm: Bin s dng nh l bin cc b, ch s dng trong th tc hay hm .

Gi tr ca mt bin thng hay thay i trong qu trnh x l. n mt lc no bin khng cn hin hu. Phm vi hot ng ca mt bin c gi l scope. Nu code nm ngoi phm vi ca mt bin th khng th dng n bin y c. Di y l m lnh ca mt chng trnh VB6 ngn: Option Explicit Dim iCount As Integer Dim X As Integer Dim Y As Integer Private Sub CmdIncreX_Click() iCount = iCount + 1 X=X+1 If X = 80 Then X=0 Y=Y+1

40

End If End Sub Private Sub CmdIncreY_Click() Dim Y iCount = iCount + 1 Y=Y+1 End Sub Trong on m lnh trn trn phm vi ca iCount, X, Y l ton b trong cc hm/th tc, tc l u cng c th ni n, dng, thy cc bins . Tuy nhin trong th tc CmdIncreY_Click() c khai bo mt bin Y, phm vi ca bin ny l ch ni b (cc b), tc l bn trong th tc CmdIncreY-Click() m thi. Chng nhng th, bn trong th tc CmdIncreY_Click th bin y cc b s che khut bin y bn ngoi, tc l bn trong th tc CmdIncreY-Click ta ch thy bin cc b Y m khng thy bin ton cc Y. Khi th CmdIncreY-Click c gi thc hin th bin cc b c pht sinh v khi th tc kt thc th bin cc b cng s b gii phng. Nu Chng ta mun khi tr li thc hin th tc CmdIncreY-Click() m bin cc b Y vn cn gi tr g n c t trc, Chng ta nn khai bo n l bin tnh Static, nh: Static Y as Integer Ngoi ra, cu Option Explicit u on m trn c dng tuyn b rng tt c mi bins dng trong Form/Module u cn phi c khai bo. Nh l VB6 khng i hi ta phi khai bo mt bin trc khi dng n. Thng thng, ty theo tnh hung, VB6 c th on ra c kiu d liu ca bin khi ta dng n ln u tin. Nu m lnh i hi gi tr ca mt bin khi n uc dng ln u th VB6 t ng coi n nh mt xu rng (xu khng c character no c, vit l "" ) nu n l xu k t hay con s 0 nu n l mt con s. iu ny rt l tin li. Tuy nhin, nu ta s nh vn ln mt bin th VB6 t ng pht sinh n xu rng hay 0. y c th khng phi l iu ta mun. Nu c dng Option Explicit th vic ny s b l ty ngay v tt c mi bin u phi uc tuyn b chnh thc. Do , chng ta nn xem vic dng Option Explicit nh iu cn thit. Phm vi ca mt bin s xc nh trong phn no ca m lnh bin s th bin s tn ti. Khi chng ta khai bo 1 bin trong 1 th tc, ch c phn lnh trong th tc c th truy nhp hay thay i gi tr ca bin s
41

; bin s c phm vi a phng (local) i vi th tc. Nhiu khi chng ta mun s dng 1 bin vi phm vi rng hn nh nhng bin m gi tr ca n c th s dng c trong ton b cc th tc trong 1 Module, hay thm ch t c nhng Module khc trong ton chng trnh. Visual Basic cho php chng ta nh ngha cc phm vi bin khc nhau nh vy. Tu thuc v cch khai bo, 1 bin c phm vi a phng hay mc Module. Phm vi Trong th tc/hm Trong Module (khai bo ti Delaration) Private Bin ch c s dng a phng trong th tc/hm khai bo n. Bin c s dng a phng trong Module: ti tt cc hm th tc/hm trong Module. Public Khng c khai bo bin public (cng cng). Bin c th c s dng bi tt c cc Module.

IV.3.1- Bin s dng trong 1 hm/th tc khai bo bin a phng trong hm/th tc, chng ta c th s dng: V d: Dim intTemp As Integer hay Static intPermanent As Integer Bin khai bo vi Static tn ti trong sut chng trnh chy, duy tr gi tr gia nhng ln hm/th tc chy; cn bin khai bo Dim th ch tn ti trong mi ln hm/th tc chy m thi. IV.3.2- Bin s dng trong phm vi 1 Module Bin khai bo vi t kho Private ti phn Declarations ca 1 Module c phm vi trong ton Module ; tc s dng c trong tt cc hm/th tc thuc Module. V d: Private intTemp As Integer hay Dim intTemp As Integer

42

Khai bo Private hay Dim mc Module l tng t nhau, tuy nhin, nn khai bo vi t kho Private IV.3.3- Bin s dng trong tt c cc Module L bin khai bo vi t kho Public ti phn Declarations ca 1 Module. N c th c s dng ti tt c cc Module trong chng trnh. V d: Public intTemp As Integer IV.4- Mt s vn khi s dng bin v hng IV.4.1- Nhiu bin vi cng 1 tn Nu c cc bin cng cng trong cc Module khc nhau c cng tn, ch phn bit r chng trong m lnh, chng ta cn nu r tn ca Module cha bin cng tn bin. Nu 2 bin cng cng kiu Integer tn intX khai bo trong c Form1 v Module1, chng ta c th ch r bin theo cch Module1.intX v Form1.intX. V d: To 1 project vi: 2 Module Standard, 1 Form vi 2 command button. Bin intX c khai bo trong Module Standard u tin: Module1. Module1 c th tc Test. Public intX As Integer Sub Test() ' Set the value for the intX variable in Module1. intX = 1 End Sub Bin intX khc c khai bo trong Module Standard th hai: Module2. Module2 cng c th tc tn Test. Public intX As Integer Sub Test() ' Set the value for the intX variable in Module2. intX = 2 End Sub
43

' Declare Module1's intX.

' Declare Module2's intX.

Bin intX th 3 c khai bo trong Form: Form1. Module m lnh ca Form1 cng c th tc tn Test. Public intX As Integer ' Declare the Form's intX ' variable. Sub Test() ' Set the value for the intX variable in the Form. intX = 3 End Sub Ba command button trn Form1 tng ng gi 3 th tc Test v s dng MsgBox hin th gi tr ca 3 bin. Private Sub Command1_Click() Module1.Test MsgBox Module1.intX End Sub ' Calls Test in Module1. ' Displays Module1's intX.

Private Sub Command2_Click() Module2.Test MsgBox Module2.intX End Sub ' Calls Test in Module2. ' Displays Module2's intX.

Private Sub Command3_Click() Test MsgBox intX End Sub Chy chng trnh, nhn vo tng command buttons. Chng ta s thy vic gi ti 3 bin khc nhau trong 3 Module. Ch rng, vi nt lnh th 3, chng ta khng ch r tn Module cha khai bo bin. IV.4.2- Bin cng cng v bin a phng Chng ta c th c bin cng tn nhng cc phm vi khc nhau. V d: 1 bin cng cng (public) tn Temp v trong 1 th tc c khai bo 1 bin
44

' Calls Test in Form1. ' Displays Form1's intX.

a phng (local) cng vi tn Temp. Khi nu gi ti Temp trong th tc l s dng bin Temp a phng trong , cn khi gi ti Temp bn ngoi th tc, th bin cng cng Temp s c s dng. Public Temp As Integer Sub Test() Dim Temp As Integer Temp = 2 MsgBox Form1.Temp End Sub ' Temp has a value of 2. ' Form1.Temp has a value of 1.

Private Sub Form_Load() Temp = 1 End Sub ' Set Form1.Temp to 1.

Private Sub Command1_Click() Test End Sub IV.4.3- Bin thuc tnh Form v Control Thuc tnh ca Form, cc Controls, hng v hm/th tc c xem nh bin trong phm vi ton Module Form. Do , khng c c thuc tnh Form hay Control c cng tn vi bin c khai bo trong Module Form. Trong Module Form, cc bin a phng c th cng tn vi cc Control. ch r l Control khi cn t hay ly gi tr ca Control , chng ta c th nu tn ca Form hay s dng t kho Me. Private Sub Form_Click () Dim Text1, BackColor ' Assume there is also a Control on the Form called ' Text1. Text1 = "Variable" Me.Text1 = "Control" ' Variable shadows Control. ' Must qualify with Me to get
45

' Control. Text1.Top = 0 Me.Text1.Top = 0 ' This causes an error! ' Must qualify with Me to get ' Control. BackColor = 0 Me.BackColor = 0 ' Variable shadows property. ' Must qualify with Me to get ' Form property. End Sub IV.4.4- Trnh tham chiu vng Bi v 1 hng s c th c nh ngha t nhng hng s khc, chng ta cn cn thn trnh xy ra tham chiu vng. V d: ' In Module 1: Public Const conA = conB * 2 ' Available throughout ' application. ' In Module 2: Public Const conB = conA / 2 ' Available throughout ' application. Khi tham chiu vng xy ra, Visual Basic s sinh li khi chy chng trnh. trnh tham chiu vng, nn gii hn vic khai bo cc hng cng cng vo trong 1 Module duy nht. IV.5- Hng IV.5.1- Khi nim Hng l i lng c gi tr thuc mt kiu d liu nht nh, nhng gi tr ca hng khng th thay i trong thi gian tn ti ca n. C hai loi hng mt l cc hng khng c tn (chng ta s gi l hng thng) l cc gi tr c th tc thi nh: 8, hay 9.5 hoc #1/2/2004#. - hng s nguyn h 10: gm cc ch s 0,1,..,9 - hng s nguyn h 16: gm cc ch s 0,1,..,9, a(A),..,f(F), v bt u bi &H - hng s nguyn h 8: gm cc ch s 0,1,..,7 nhng bt u bi &
46

V d: C s 10 (Decimal) 9 15 255
-

C s 8 (Octal) &O11 &O17 &O377

C s 16 (Hexadecimal ) &H9 &HF &HFF

hng s thc c th c vit dng du phy tnh hoc dng k php khoa hc: v d 3.1414 hay 0.31414E1 hng xu k t c bao bi cp nhy kp ( ): abc, Vu Van Long hng kiu Date c bao bi cp nhy kp ( ), hoc cp # #

Loi th hai l cc hng c tn (gi l hng k hiu). Cc hng k hiu phi nh ngha trc khi s dng, tn ca hng c t theo quy tc ca tn. Sau y nu khng c iu g c bit th chng ta gi chung l hng Trong VB c 2 kiu hng (c tn): Hng s c s hay nh ngha trc bi h thng: v d vbCrLf, vbBlue,vbOKCancel,.. Hng s do ngi dng nh ngha bng cch dng t kho const

IV.5.2- Khai bo hng [Public|Private] Const <constantname> [As type] = <expression> trong <constantname> l tn hng do ngi lp trnh t, <expression> l gi tr ca hng. V d: Const conPi = 3.14159265358979 Public Const conMaxPlanets As Integer = 9 Const conReleaseDate = #1/1/95# IV.6- Phm vi hng s do ngi dng nh ngha Hng khai bo trong 1 th tc c phm vi ch trong th tc Hng khai bo trong phn Declarations ca 1 Module c phm vi trong ton Module. Hng khai bo trong phn Declarations ca 1 Module vi t kho Public c phm vi trong ton chng trnh.

V- Cc ton t
47

Cc ton t s hc:

- Cng (+), Tr (-), Nhn (*), Chia (/) - Mod (ly phn d), \ (ly phn nguyn) V d: 10 mod 3 = 1 10 \ 3 = 3

Cc ton t so snh:

= (bng); < (nh hn); > (ln hn); <> (khc); <= (nh hn bng); >= (ln hn bng) Cc ton t Logic: - And, Or, Xor(tuyn loi tr), Not: thc hin trn cc ton hng kiu Boolean

Gt1 True True False False

Gt2

GT1And GT2

Gt1 Or Gt2

Gt1 Xor Gt2

Not (Gt1)

True False True False Bng B4


True True False False False True True False False True True True False False False True - Bng gi tr chn l ca cc ton t logic

Cng xu: &, + (phin bn c): abc & xyz

Ton t trn bt: and, or, xor, not: thc hin trn cc ton hng kiu s nguyn thao tc trn tng cp bt tng ng ca cc ton hng Gt1 1 1 0 0 Gt2 1 0 1 0 GT1And GT2 1 0 0 0 Gt1 Or Gt2 1 1 1 0 Gt1 Xor Gt2 0 1 1 0 Not (Gt1) 0 0 1 1

Bng B5 - Bng gi tr chn l ca cc ton t trn bit VI- Chuyn i kiu d liu Visual Basic cung cp mt s hm gip chng ta chuyn i gi tr t kiu ny sang mt kiu d liu khc.

48

Tn hm Cbool Cbyte Ccur Cdate CDbl Cint CLng CSng CStr Cvar CVErr

Kiu d liu ca kt qu (tr v) Boolean Byte Currency Date Double Integer Long Single String Variant Error

Bng B6 - Mt s hm chuyn i kiu d liu Ch : Kiu d liu truyn cho hm chuyn i phi ph hp. V d, khi chuyn 1 gi tr kiu Long thnh 1 s Integer, gi tr kiu Long phi trong min gi tr ca kiu Integer. VII- Cc cu trc iu khin Mt chng trnh l tp nhiu cu lnh, thng thng mt cch trc quan chng ta hiu chng trnh thc hin tun t cc lnh t trn xung di, bt u t lnh th nht trong hm main v kt thc sau lnh cui cng ca n. Nhng thc t chng trnh c th phc tp hn s tun t nhiu, chng hn nh mt cu lnh (hay khi lnh) ch c thc hin khi c mt iu kin no ng, cn ngc li n s b b qua, tc l xut hin kh nng la chn mt nhnh no . Hay mt chc nng no c th phi lp li nhiu ln. Nh vy vi mt ngn ng lp trnh c cu trc ni chung phi c cc cu trc iu khin trnh t thc hin cc lnh trong chng trnh (gi ngn gn l cc cu trc hoc cc ton t iu khin). Cc ngn ng lp trnh ngy nay ni chung u c cc nhm cu trc iu khin sau:

- Cu trc tun t - Cu trc r nhnh - Cu trc lp


Ngoi cc cu trc ni trn trong cc ngn ng lp trnh cn c th c cu trc iu khin khc na l iu khin nhy goto. Cu trc goto tng
49

c s dng rng ri nhng chng lm gim i tnh cu trc, s cht ch ca chng trnh, hn na ngi ta chng minh l n c th c thay th bi cu trc r nhnh v lp v vy cc nh lp trnh khuyn chng ta nn hn ch s dng goto. Tuy nhin vi mi ngn ng lp trnh c th, cc cu trc iu khin c th hin khc nhau, bi cc lnh, cc ton t hay t kho khc nhau. VII.1- Cu trc tun t y l cu trc iu khin n gin nht ca cc ngn ng lp trnh ni chung, iu khin thc hin tun t cc lnh trong mt module (th tc hay hm) theo th t t trn xung di (nu khng c iu khin no khc) - y, s tun t chng ta ch ni ti cc lnh trong mt hm hay th tc c gi thc hin ch chng ta khng ni s tun t ca cc lnh trong mt project iu ny khng ph hp c bit trong cc chng trnh hng s kin. VII.2- Cu trc r nhnh VB6 c 3 cu trc iu khin r nhnh, l:
If...Then If...Then...Else Select

Case

VII.2.1- Cu trc If...Then * ngha: L mt cu trc iu kin, thc hin cng vic no nu iu kin ra l ng hoc ngc li. Ni nm na l "Nu iu ny ng th lm vic A, ngc li th lm B." * C php: If Biu thc iu kin Then <Cc cu lnh> [ElseIf Biu thc iu kin 2 Then <Cc cu lnh 2>...] Else <Cc cu lnh> End If Trong : biu thc iu kin c th l cc php so snh chui hoc s, hay cc php ton Logic khc.
50

* V d 1: Dim Num, Dig As Integer Num = 20 If Num < 50 Then Dig = 1 Else Dig = 2 End If Kt qu ca on lnh: Dig = 1 * V d 2: Dim Num, Dig As Integer Dim St As String Num = 50 If Num < 10 Then Dig = 1 St = "Small" ElseIf Num < 30 Then Dig = 2 St = "Medium" Else Dig = 3 St = "Large" End If Kt qu ca on lnh trn: Dig = 3. Lu nu ch c 1 dng lnh if then (trn 1 dng) th khng cn c end if. VII.2.2- Cu trc Select Case * ngha: L mt cu trc chn la theo mt bin hay mt iu kin no . Cu trc ny thng s dng trong trng hp cn xt nhiu iu kin chn la xy ra trn mt bin no .
51

* C php: Select Case <Bin hay biu thc iu kin> Case <gi tr 1> <Cu lnh 1> ... Case <gi tr n> <Cu lnh n> [Case Else <Cu lnh Else>] End Select Trong : - Bin cng c th l mt biu thc. - Gi tr c th dng cc php so snh. Nu gi tr l mt dy lin tc, c th vit gn li theo c php: Case <gi tr 1> To <gi tr n>. * V d 1: Dim Num, Dig As Integer Num = 50 Select Case Num Case 10 Dig = 1 Case 30 Dig = 2 Case Else Dig = 3 End Select Kt qu ca on lnh: Dig=3. Mc nhin iu kin Select Case s dng php so snh bng so snh gi tr trong tng Case. Nu mun dng cc php so snh khc ta dng thm
52

cu trc IS hoc tn bin ca iu kin cn so snh, sau l cc gi tr so snh. * V d 2: Dim Num, Dig As Integer Num = 20 Select Case Num Case Is < 10 Dig = 1 Case Is < 30 Dig = 2 Case Else Dig = 3 End Select Kt qu: Dig = 2

* V d 3: Private Sub mnuCut_Click (Index As Integer) Select Case Index Case 0 CopyActiveControl ClearActiveControl Case 1 CopyActiveControl Case 2 ClearActiveControl Case 3 PasteActiveControl Case Else frmFind.Show ' Show Find dialog box.
53

' Cut command. ' Call general procedures.

' Copy command.

' Clear command.

' Paste command.

End Select End Sub VII.3- Cc Cu trc lp Trong phn ny chng ta tm hiu 3 cu trc lp ca VB6 l
Do...Loop For...Next For

Each...Next

VII.3.1- Cu trc lp Do...Loop * ngha: L mt cu trc lp thc hin cu lnh cho n khi biu thc iu kin thc s c tha mn. cu lnh ny, khi gp iu kin tha mn th vng lp dng. Nu iu kin sai th b qua cc cu lnh v thc hin cc lnh pha di dng Loop, cu trc do c 2 dng: C1: Do While condition statements Loop C2: Do statements Loop until condition * V d 1: Dim i As Byte i=1 Do While i < 10 Debug.Print i i = i+1 Loop Kt qu th hin: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Hoc tng t: Dim i As Byte

54

i=0 Do i=i+1 Debug.Print i Loop Until i = 10 * V d 2: Nhp s N, Hy in cc s nguyn t t 2 ti N (v d N = 7, khi s xut hin dy 2,3,5,7).

Public Function DaySoNT(N As Integer) as string Dim DayNT, i As Integer Dim StrNT As String StrNT = "" DayNT = 1 ' Khoi tao DayNT = 1 Do DayNT = DayNT + 1 ' Tang DayNT i=2 ' khoi tao i = 2 Do While (DayNT Mod i) <> 0 i=i+1 ' Tng i Loop If i = DayNT Then StrNT = StrNT + " " + Str(DayNT) ' Gn dy s NT End If Loop Until DayNT = N DaySoNT = StrNT End Function * V d 3: m s l xut hin ca 1 xu (target) trong mt xu (longstring) Function CountStrings(longstring As String, target As String) As Integer Dim position, count position = 1 Do While InStr(position, longstring, target)
55

position = InStr(position, longstring, target) + 1 count = count + 1 Loop CountStrings = count End Function

Hai bin dng khc ca lp vi s bc khng nh trc, ch khc l qu trnh lp tip tc khi iu kin l False: Lp 0 hay nhiu ln (iu kin trc) Do Until condition Statements Loop Lp t nht 1 ln (iu kin sau) Do Statements Loop Until condition

ngha: lp cho ti khi condition ng th kt thc

VII.3.2- For...Next ngha: L mt cu trc lp vi s bc lp l xc nh. Cu trc ny thng s dng khi Chng ta bit trc s bc lp, cu trc ny cu lnh c thc hin t u cho n khi ht s bc lp.

C php:

For <counter> =< Start> To <End> [Step <step>] <Cu lnh> [Exit For] <cu lnh> Next [<counter>] Trong : - <Counter> : bin m kiu s nguyn.
56

- <Start> : Gi tr u ca Counter. - <End> : Gi tr kt thc ca Counter. - <step> : Bc lp sau mi ln lp. Nu gi tr Step ny khng c, mc nhin bc lp l 1. V d 1:

Dim i As Byte For i = 1 To 10 Debug.Print i Next Kt qu th hin: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. V d 2:

Dim i As Byte For i = 1 To 10 Step 2 Debug.Print i Next Kt qu th hin: 1, 3, 5, 7, 9

V d 3: Hm tnh giai tha ca s n.

Public Function GiaiThua (N As Integer) as Long Dim Gt As Long Dim i As Integer If N = 0 Then Gt = 1 Else Gt = 1 For i = 1 To N Gt = Gt * i Next End If GiaiThua = Gt End Function

V d 4: In cc tn font ra ca form
57

Private Sub Form_Click () Dim I As Integer For i = 0 To Screen.FontCount Print Screen.Fonts(i) Next End Sub Sub HighlightButton(MyControl As Variant) Dim i As Integer For i = 0 To frmVCR.Controls.Count - 1 If TypeOf frmVCR.Controls(i) Is Shape Then If frmVCR.Controls(i).Name = MyControl Then frmVCR.Controls(i).Visible = True Else frmVCR.Controls(i).Visible = False End If End If Next End Sub

Ch : Bin m trong vng lp for .. next nn l bin kiu int hoc long, v cc bin m kiu ny thc hin hiu qu hn bin m kiu s thc. VII.3.3- Cu trc lp For Each...Next Tng t nh For ... Next, nhng n duyt qua cc phn t trong 1 object collection hay trong 1 mng, ch khng phi duyt theo s ln m nh trc. iu c ch khi chng ta khng bit trc s phn t trong nhm cn duyt. C php For Each <element> In <group> <statements> Next element V d: In cc bng ca mt c s d liu

58

Sub ListTableDefs() Dim objDb As Database Dim MyTableDef as TableDef Set objDb = OpenDatabase("c:\vb\biblio.mdb", _ True, False) For Each MyTableDef In objDb.TableDefs() List1.AddItem MyTableDef.Name Next MyTableDef End Sub Ch khi s dng For Each...Next:

Vi collection, phn t (element) ch c th l: bin Variant, bin Object, hay 1 object c lit k trong Object Browser.
Vi

mng, phn t (element) ch c th l bin Variant.

Khng c s dng For Each...Next vi mng cc phn t c kiu d liu do ngi dng t nh ngha bi 1 bin Variant khng th cha d liu c kiu ny. VII.4- Lm vic vi cu trc iu khin VII.4.1- Cc cu trc lng nhau V d: In cc font c th in trn my in Private Sub Form_Click() Dim SFont, PFont For Each SFont In Screen.Fonts() For Each PFont In Printer.Fonts() If SFont = PFont Then Print SFont End If Next PFont Next SFont End Sub VII.4.2- Thot khi 1 cu trc iu khin lp Bng cch s dng cu lnh Exit: Exit For gip thot khi vng lp For Next, v Exit Do gip thot khi vng lp Do While.
59

For counter = start To end [Step increment] [statementblock] [Exit For] [statementblock] Next [counter[, counter] [,...]]

Do [{While | Until} condition] [statementblock] [Exit Do] [statementblock] Loop

V d: Private Sub Form_Click() Dim SFont, PFont For Each SFont In Screen.Fonts() For Each PFont In Printer.Fonts() If SFont = PFont Then Print Sfont Exit For End If Next PFont Next SFont End Sub VII.4.3- Thot khi hm/th tc Bng cu lnh: Exit Sub v Exit Function. V d: ' Exit inner loop.

60

Private Sub Form_Click() Dim SFont, PFont For Each SFont In Screen.Fonts() For Each PFont In Printer.Fonts() If SFont = PFont Then Print Sfont Exit Sub End If Next PFont Next SFont End Sub ' Exit the procedure.

VIII- D liu kiu mng (Arrays) VIII.1- Khi nim Khi chng ta c nhiu bin tng t nhau, th d nh im thi ca 10 hc sinh, nu phi t tn khc nhau cho tng bin (th d: HoaMark, TaiMark, SonMark, TamMark, NgaMark, HuongMark .v.v..) th tht l cc nhc v bt tin. Chng ta c th dng Mng c mt tn chung cho c nhm, ri ni n im ca tng ngi mt bng cch dng mt con s gi l ch s mng. Ni chung mt mng l dy cc phn t c kiu nh nhau, c tn chung nh tn ca mng v phn bit nhau bi ch s. Chng ta c th c mng 1 chiu (mng c 1 ch s), mng 2 chiu (c 2 ch s),.. VIII.2- Khai bo mng Chng ta s khai bo mng nh sau: Mng 1 chiu: Dim <tn_mng> ( <s phn t>) as <kiu d liu> Dim <tn_mng> (<ch s du> to <ch s cui>) as <kiu d liu> v d : Dim myStudentMarks(10) as Integer Dim arrX ( 1 to 10) as Single

61

K chng ta ni n im ca mi hc sinh bng cch vit myStudentMarks(i), m i l ch s. Gi d ta mun tnh tng s im:

Sub CmdCalculateTotal_Click() Dim myStudentMarks(10) As Integer ' Declare array, assuming students' marks are Integers Dim TotalMark As Integer ' Use this variable to accumulate the marks Dim i As Integer ' Use i as ArrayIndex myStudentMarks(1) = 6 ' First student's mark myStudentMarks(2) = 7 ' Second student's mark myStudentMarks(3) = 5 myStudentMarks(4) = 9 myStudentMarks(5) = 6 myStudentMarks(6) = 8 myStudentMarks(7) = 9 myStudentMarks(8) = 10 myStudentMarks(9) = 6 myStudentMarks(10) = 7 TotalMark = 0 ' This statement is not required as VB6 initialises TotalMark to 0 ' Go through all students and add each student's mark to the Total For i = 1 To 10 TotalMark = TotalMark + myStudentMarks(i) Next txtTotal.Text = CStr(TotalMark) ' Convert to String for display by assigning to Textbox txtTotal End Sub

Hnh II.10 - V d tnh tng im


62

Khi ta khai bo Dim myStudentMarks(10) as Integer tht ra ra ta c mt mng vi 11 phn t ch khng phi 10, v cc phn t ca mng bt u vi ch s bng 0. Nu tht s mun c chnh xc 10 phn t thi, ta c th khai bo nh sau: Dim myStudentMarks (1 To 10 ) As Integer Khai bo mng 2 chiu Loi mng ta va dng qua l mng 1 chiu. Nu trong th d trn ta mun tnh im ca hc sinh trong 3 lp hc, ta c th mng 2 chiu nh sau: ' Four classes, each has up to 6 students Dim myStudentMarks(3, 5) As Integer ' Note that each dimension starts at 0 ' or ' Three classes, each has up to 5 students Dim myStudentMarks(1 To 3, 1 To 5) As Integer Chng ta c th hnh dung mng 2 chiu nh mt bng c cc dng, cc ct, mi phn t c 2 ch s l ch s dng v ch s ct. chng ta c c php nh sau Dim <tn mng> (<s dng>, <s ct>) as <kiu d liu> hoc Dim <tn mng> (<ch s dng u> to <ch s dng cui>, _ <ch s ct u > to <ch s ct cui>) as <kiu d liu> Nhn tin ni chuyn v mng cho bin, ta cng c th dng mng cho Controls cng mt loi trong mt Form. Nu ta c nhiu Label Controls (hay Textbox Controls) vi nhng chc nng ging nhau trong chng trnh, ta c th dng cng mt tn cho cc Controls, nhng khc nhau bi ch s mng ca chng. Chng ta c th to mt mng cc Labels bng cch Copy mt Label ri Paste n ln Form. VB6 s hi nu chng ta mun c mt mng cc Controls. Nu Chng ta tr li Yes, VB6 s t ng cho Label th nht c ch s bng 0 v Label mi va c copy c ch s l 1. Sau nu chng ta tip tc Paste ci Label c Index ri th VB6 khng hi na v vui v
63

tchirchir s ln cho cc Labels sau. Do nu Chng ta gi Label th nht l lblClass ri Copy v Paste n 2 ln Chng ta s c mt mng 3 Labels tn lblClass v cc ch s l 0, 1, 2. Trong th d sau y, ta create mt Array of Labels tn lblClass v mt Array of Textboxes tn txtClassMark. Trong Sub Form_Load ta generate Captions ca cc Labels. Private Sub Form_Load() Dim i As Integer For i = 0 To 2 ' Label Index starts at 0, but Class number starts at 1 lblClass(i) = "Mark of Class " & CStr(i + 1) Next End Sub Sub CmdCalculateTotal_Click() ' Three classes, each has up to 5 students Dim myStudentMarks(1 To 3, 1 To 5) As Integer Dim TotalMark As Integer Dim ClassMark As Integer Dim i As Integer ' Use as ArrayIndex for Class Dim j As Integer ' Use as ArrayIndex for StudentMark ' Students' marks of first class myStudentMarks(1, 1) = 6 myStudentMarks(1, 2) = 7 myStudentMarks(1, 3) = 5 myStudentMarks(1, 4) = 9 myStudentMarks(1, 5) = 6 ' Students' marks of second class myStudentMarks(2, 1) = 8 myStudentMarks(2, 2) = 8
64

myStudentMarks(2, 3) = 6 ' Students' marks third class myStudentMarks(3, 1) = 5 myStudentMarks(3, 2) = 7 myStudentMarks(3, 3) = 8 myStudentMarks(3, 4) = 6 For i = 1 To 3 ClassMark = 0 ' Intialise ClassMark of class i to 0 ' Now go through each Student in Class i For j = 1 To 5 ClassMark = ClassMark + myStudentMarks(i, j) ' Accumulate ClassMark of class i TotalMark = TotalMark + myStudentMarks(i, j) Next ' Display ClassMark of class i. Note that txtClassMark Index starts at 0, NOT 1 txtClassMark(i - 1).Text = CStr(ClassMark) Next txtTotal.Text = CStr(TotalMark) ' Display TotalMark End Sub Ghi ch: Nu Chng ta c mt mng cc Textboxes gm ch c 2 Textboxes, ri sau chng ta xo mt Textbox v mun dng Textbox cn li lm Textbox duy nht, Chng ta vn phi refer (tham chiu n n) bng cch dng ch s (Index) (th d: txtClassMark(0) ), d rng by gi n l Textbox duy nht mang tn y. Nu chng ta mun loi b vic phi dng ch s th chng ta phi vo Properties Window Delete ci Index value ca ArrayTextbox. Nu Chng ta khng lu im ny th c khi chng ta s bt tc khng hiu ti sao mnh dng ng tn m VB6 vn nht nh rng ci Textbox Chng ta ni n khng hin hu, v VB6 cn Index value ca Textbox.

65

VIII.3- Mng ng Thnh thong, khi khai bo mng chng ta khng bit r mnh s cn bao nhiu phn t cho mt chiu. Trong trng hp y Chng ta c th dng Mng ng (Dynamic Arrays v) khai bo mt mng nh sau: Private myStudentMarks() As Integer V Chng ta khng mt con s gia hai du ngoc n nn VB6 bit l Chng ta mun dng Dynamic Array v dimension ca n c th s thay i trong tng lai. Khi no mun thay i dimension ca Dynamic Array Chng ta dng ReDim keyword: ReDim myStudentMarks(10) ReDim Preserve myStudentMarks(10) C hai statements trn u i dimension ca Array myStudentMarks thnh 11 (t Element 0 n Element 10), nhng trong statement th nh ch Preserve gi nguyn values ca cc Elements ca Array. Khi lm vic vi Array thnh thong Chng ta cn bit cc Elements thp nht v cao nht bng cch dng LBound v UBound. Private MyArray(10 to 20) As String LowestNum = LBound(MyArray) ' LBound returns 10 HighestNum = UBound(MyArray) ' UBound returns 20 Private YourArray( 2 to 5, 10 to 15) As Integer LowestNumOfFirstDimension = LBound(YourArray,1) ' LBound returns 2 HighestNumOfSecondDimension = UBound(YourArray,2) 'UBound returns 15

66

Ngoi ra nu dng Dynamic Array, Chng ta c th assign mt Array ny cho mt Array khc, thay v phi dng FOR ...LOOP copy tng Array Element. MyArray = HisArray IX- nh ngha kiu mi Chng ta c th gp cc d liu ca cng mt vt no thnh mt nhm v t tn cho kiu d liu nh sau: Type EmployeeRec ' EmployeeRec as name of this new Data Type Firstname As String Surname As String Salary As Single DateOfBirth As Date End Type ' Now declare a variable of the new data type Dim MyEmployee As EmployeeRec MyEmployee.Firstname = "David" MyEmployee.Surname = "Smith" MyEmployee.Salary = 25000 MyEmployee.DateOfBirth = #14/6/1963# Trong Software Engineering, ngi ta gi kiu d liu ny l d liu kiu cu trc phn bit n vi cc loi cc kiu d liu n gin khc nh Integer, Boolean, Single .v.v.. Chng ta cch ni n mt mnh d liu, MyEmployee.Firstname, ging nh l Property Firstname ca mt control tn MyEmployee. C mt cch vit khc trnh phi vit nhiu ln ch MyEmployee bng cch dng t kho With nh sau: With MyEmployee .Firstname = "David" .Surname = "Smith"

67

.Salary = 25000 .DateOfBirth = #14/6/1963# End With Mc du nh ngha v dng kiu cu trc cch ny rt tin li, nhng sau ny ta c th dng Class t c cng mt mc tiu m cn hu hiu hn na. Trong Class chng nhng ta nh ngha nhng mnh data m cn ra cch x l chng na. X- C bn v Hm v th tc Trong cc ngn ng lp trnh th vic xy dng v s dng cc chng trnh con c ngha quan trng n gip chng ta phn chia chng trnh thnh cc modul c lp nh hn, d kim sot, d pht trin hn v c th s dng li cc modul nhiu ni m khng phi vit li. Trong VB c hai loi chng trnh con l th tc v hm. Hm/th tc l n v c lp ca chng trnh, c mt chc nng xc nh, c th c gi thc hin thng qua tn. Trong phn ny chng ta xem xt hm mc n gin nht, gip bn c c khi nim c bn ban u v hm /th tc v c th vit c cc hm n gin C hai loi hm/th tc l hm ca th vin v hm/th tc do ngi lp trnh nh ngha (hay cn gi l hm ca ngi dng). Li ch ca vic s dng hm/ th tc

Chia chng trnh thnh cc khi logic tch ri, mi khi d dng c vit v gi li hn nu vit c chng trnh ln. Mt hm/th tc c th c s dng nhiu ln. Trong Visual Basic c mt s kiu hm/th tc sau: Th tc khng tr v gi tr: th tc chung v th tc s kin. Hm c tr v gi tr. Th tc thuc tnh c th tr v v gn gi, v gn tham chiu ti cc i tng. C php khai bo 1 th tc: [Private|Public][Static]Sub procedurename (arguments) statements End Sub
68

X.1- Khai bo hm v th tc

C php khai bo 1 hm: [Private|Public][Static]Function procedurename (arguments) [As type] statements End Function X.2- To mt hm/th tc chung: G vo phn u hm/th tc vo ca s Code, vi dng sau: Sub UpdateForm () Function GetCoord () Visual Basic s hon tt th tc theo khun mu X.3- Gi thc hin th tc/hm Vi th tc chng ta c 2 cch nh sau: Call <tn th tc> ( danh sch cc i s>) hoc <tn th tc> danh sch cc i s v d: Call MyProc (FirstArgument, SecondArgument) MyProc FirstArgument, SecondArgument Vi hm: <tn hm> [( danh sch i s)] v d: Print 10 * ToDec X = ToDec If ToDec = 10 Then Debug.Print "Out of Range" X = AnotherFunction(10 * ToDec) Chng ta cng c th gi 1 hm nh cch chng ta gi 1 th tc: Call Year(Now) Year Now Khi , Visual Basic s in ra gi tr tr v t hm Year. X.4- Gi hm/th tc t Module khc Trong Module Form Call Form1.SomeSub(arguments)
69

Trong Module Class Dim DemoClass as New Class1 DemoClass.SomeSub Trong Module Standard Module2.CommonName(arguments) X.5- Truyn tham s cho hm/th tc: Khi gi mt hm hay th tc chng ta cn phi truyn cc d liu u vo cho chng, cng vic ny gi l truyn tham s, trong VB c 2 c ch: truyn tham s theo gi tr (tham tr), v truyn tham s theo tham chiu (tham chiu). Thng thng hm/th tc c bao nhiu tham s (tham s hnh thc) th khi gi cng phi truyn ng by nhiu i s (tham s thc s), nhng VB cng c c ch xc nh hm/th tc c tham s gi tu chn, hn na n c th c s tham s khng xc nh trc. Sau y chng ta xt cc trng hp X.6- Truyn tham s bng gi tr Ch truyn mt bn sao ca bin. Nu th tc thay i gi tr, thay i ch nh hng n bn sao, khng nh hng n bin c truyn. S dng t kho ByVal. V d: Sub PostAccounts(ByVal intAcctNum as Integer) 'Cc lnh c t y. End Sub X.7- Truyn tham s bng tham chiu Kiu truyn ny cho php th tc truy nhp trc tip n bin c truyn. Do , gi tr ca bin c th b thay i bi th tc m bin c truyn vo. xc nh tham s l tham chiu chng ta s dng t kho ByRef khai bo tham s, y l kiu truyn bin mc nh trong Visual Basic. V d Sub MinMax (Byval a as Byte, ByVal b as Byte, _ ByRef Max as Byte, ByRef min as Byte) Phi truyn tham s l mt gi tr thuc kiu d liu c ch r cho tham s. Nu khng, bn phi truyn mt biu thc lm tham s. Visual Basic tnh gi tr biu thc v truyn n theo kiu d liu c yu cu.

70

Cch n gin chuyn 1 bin thnh 1 biu thc l t n vo trong 1 cp ngoc n. V d, truyn 1 bin integer vo 1 th tc yu cu 1 tham s kiu string: Sub CallingProcedure() Dim intX As Integer intX = 12 * 3 Foo(intX) End Sub

Sub Foo(Bar As String) MsgBox Bar 'The value of Bar is the string "36". End Sub X.8- S dng cc tham s tu chn Chng ta c th ch ra mt s tham s trong 1 th tc/hm l tu chn (tc l c th khng cn truyn khi gi) bng cch s dng t kho Optional. Ch rng, mi tham s theo sau t kho Optional u l tu chn. V d: Dim strName As String Dim varAddress As Variant

Sub ListText(x As String, Optional y As Variant) List1.AddItem x If Not IsMissing(y) Then List1.AddItem y End If End Sub

Private Sub Command1_Click() strName = "yourname" ' Second argument is not ' provided.
71

Call ListText(strName) End Sub

X.9- t gi tr mc nh cho tham s tu chn Chng ta c th t gi tr mc nh cho tham s tu chn. Gi tr l gi tr m tham s s c nhn khi gi th tc nu n khng c truyn khi th tc/hm cha n c gi. V d: Sub ListText(x As String, Optional y As Integer = 12345) List1.AddItem x List1.AddItem y End Sub

Private Sub Command1_Click() strName = "yourname" ' Second argument is not ' provided. age = 45 Call ListText(strName) ' Adds "yourname" and End Sub X.10- S dng s tham vi s lng khng nh trc S tham s cho 1 hm/th tc thng c nh sn khi khai bo n. Nhng nu s dng t kho ParamArray, chng ta c th c khai bo cho php c c s tham s l tu khi gi. V d: Dim x As Integer Dim y As Integer Dim intSum As Integer ' "12345".

Call ListText(strName, age) ' Adds "yourname" and 45.

Sub Sum(ParamArray intNums())


72

For Each x In intNums y=y+x Next x intSum = y End Sub

Private Sub Command1_Click() Sum 1, 3, 5, 7, 8 List1.AddItem intSum End Sub

73

Chng III- MT S CONTROL C S I- Khi nim Controls v cc s kin? Control (iu khin) va c hnh, va c code chy bn trong mt window nho nh, ging nh mt Form. Khi ta lp trnh VB6 ta lp rp cc Controls (l nhng vt dng tin ch) trn mt hay nhiu Form c mt chng trnh nhanh chng. Ta giao dch vi mt control qua ba c tnh ca control: Properties(c tnh-thuc tnh): tp hp cc c tnh ca control m ta c th n nh lc thit k hoc khi chy chng trnh. C nhiu thuc tnh v din mo, nu ta thay i lc thit k s thy kt qu hin ra lp tc, th d Font hay mu sc.

Methods (phng thc): nhng g control thc hin uc, tc l nhng kh nng ca n- hay cc hnh ng ca control.

Events (s kin): nhng s kin m control s thng bo cho chng ta bit khi n xy ra vi control. Khi mt s kin xy ra VB6 s thc hin mt tc v x l s kin (th d nh Sub Command1_Click()), min l chng ta vit code sn trong . Nu khng c code th coi nh chng ta b qua event loi . C mt s s kin m chng ta thng x l l:

Click: xy ra khi ngi dng click ln control. Ta thng dng n cho CommandButton v Listbox. MouseDown, MouseUp: mi khi ngi dng bm nt chut l c mt s kin MouseDown, khi ngi dng bung n ra th c mt s kin MouseUp. Ta c th dng s kin MouseDown m menu ng cnh hay bt u mt din bin ko/th. Th d: Private Sub Foods_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbRightButton Then ' if Right button was pressed PopupMenu mnuActions ' popup a menu End If End Sub

74

Private Sub DrinkList_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) DrinkList.drag ' Displaying a drag icon to start the drag process End Sub l Click khng cho chng ta thm chi tit g v s kin, trong khi MouseDown/MouseUp cho ta bit v tr ca con tr, nt no no ca chut c bm v lc y ngi dng c bm nt Shift, Ctrl hay Alt khng. Mi Click l i i vi mt cp MouseDown/MouseUp. Nu bn mun x l va Click ln MouseDown th phi cn thn. Th d bn mun va mun x l s kin bm chut va x l s kin ko chut th phi lm sao phn bit hai trng hp. Nu khng ngi dng ch mun thy kt qu ca Click m li thy control bt u hin th mt Drag icon th s bc mnh. KeyPress: xy ra khi ngi dng bm 1 phm. Ta thng dng n cho TextBox loi ra c g phm ta khng chp nhn. KeyPress cho ta mt s l m ASCII ca k t c bm, mt con s c gi tr t 1 n 255.

Trong th d di y, mt phm Enter s c coi nh mt phm TAB: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then KeyAscii = 0 ' Swallow the character to avoid side effect SendKeys "{TAB}" ' Emulate entering a TAB End If End Sub KeyDown, KeyUp: mi s kin KeyPress l cho ta mt cp s kin KeyDown/KeyUp. KeyDown/KeyUp cho ta gi tr KeyCode v Shift. pht hin phm chc nng ta cn dng s kin KeyDown.

Trong th d di y, ta hin th phm chc nng ngi dng bm: Private Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer) If (KeyCode >= 112) And (KeyCode <= 123) Then nu l F1-F12 MsgBox "You pressed the Function key: F" & _
75

Trim(Str(KeyCode - 111)) End If End Sub GotFocus: Control tr nn active khi n nhn c Focus. N s n s pht sinh s kin GotFocus. Ta c th dng n i mu background ca mt text box nh trong th d di y: Private Sub Text2_GotFocus() Text2.BackColor = vbYellow End Sub LostFocus: Thng thng khi mt Control GotFocus th trc c mt Control khc LostFocus. Ta c th dng s kin ny kim tra d liu c nhp hay thu xp cng chuyn cho mt control va mt Focus. Trong th d di y, nu ngi dng khng nh vo mt con s trong Textbox Text1 th s c thng bo v Tab Cursor s tr li Textbox Text1.

Private Sub Text1_LostFocus() If Not IsNumeric(Text1.Text) Then MsgBox "Please enter a number!" Text1.SetFocus End If End Sub DragDrop: xy ra khi ta th(drop) mt ci g ln control. Tham s ca n cho ta bit Control no c Drag (ko) v Drop(th). Nhiu khi mt control c th nhn drop t nhiu control khc nhau. Trong trng hp ta phi kim tra xem hoc kiu, tn hoc gi tr bit control l g ty nghi x l. Trong th d di y, khi Ngi dng drop mouse xung Textbox Text2, nu Source l mt Listbox, khng cn bit Listbox no, th ta copy dng c chn trong Listbox y qua Textbox Text2. Private Sub Text2_DragDrop(Source As Control, X As Single, Y As Single)
76

If TypeOf Source Is ListBox Then Text2.Text = Source.Text End If End Sub II- Mt s Control thng dng II.1- Nt lnh (Command button) Command button (nt lnh) cho php ngi s dng thc hin 1 hnh ng. CommandButton rt tin cho ta dng vo vic x l mt chuyn g khi User click ln button. Event ta dng thng nht cho CommanButton l Click. Khi ngi dng nhn vo nt lnh, th tc s kin Click c gi. Lp trnh vin vit lnh vo th tc s kin Click thc hin hnh ng mong mun. Ta dng Property Caption ca CommandButton enter ci g ta mun display trn button. C nhiu cch chn 1 nt lnh khi chy: - Nhn chut vo Command button
- Dng phm Tab chuyn ti Command button, ri n SPACEBAR hay

ENTER.
- Nu mun cho php User dng ALT+E (bm v gi Atl trong lc bm nt

E) pht sinh s kin click th thm du "&" trc ch E trong Caption ca button. Caption s hin th ch E vi mt gch di. - Ngoi ra ta cng c th cho thm mt hnh vo CommandButton bng cch chn mt icon cho thuc tnh picture v t Property Style ra Graphical, thay v Standard.

Hnh III.1 - Mt nt lnh dng ho Lc chy chng trnh chng ta c th thay i hnh hay tiu (Caption) ca nt lnh. Trong th d di y, tiu ca nt lnh CmdOperation hon i gia hai gi tr Stop v Start:
-

77

Private Sub CmdOperation_Click() If CmdOperation.Caption = "&Stop" Then CmdOperation.Caption = "St&art" Else CmdOperation.Caption = "&Stop" End I

End Sub

Gi th tc s kin: Trn 1 nt lnh c cc s kin, thng thng cc s kin ny c gi khi c s kin tng ng xy ra, nhng chng ta cng c th pht sinh m lnh gi n, v d nh vi cmdClose ta c th gi th tc Click nh sau: cmdClose_Click Nu mt nt lnh l mc nh trn Form, nhn ENTER khi khng c nt lnh no ang c chn th nt s c chn. Lc thit k, chng ta t nt lnh mc nh bng cch thay i gi tr thuc tnh Default thnh True.

Nu nt lnh l Cancel mc nh trn Form, nhn ESC, nt lnh ny s c chn. Lc thit k, chng ta t Cancel mc nh bng cch thay i gi tr thuc tnh Cancel mc nh thnh True.

Tt c cc cch trn khin Visual Basic gi th tc s kin Click.

Hnh III.2 - Minh ho nt lnh trn form II.2- Nhn (Label) Label (nhn) hin th vn bn m ngi dng khng th trc tip thay i nh TextBox. Bn c th s dng Label nh danh cc Control khng c thuc tnh Caption, chng hn Text box v scroll bar. Do ta c th dng thuc tnh Font, ForeColor v Backcolor lm cho n p. Ngoi ra thuc tnh BorderStyle c th cho Label lm xung nu
78

bn t n bng Fixed Single. Nu t gi tr thuc tnh BackStyle bng Transparent s trnh trng hp Backcolor ca Label lm cho khng p. Label cng c thuc tnh Tabindex. Nu bn mun dng ALT <key> mang Tab Cursor v mt Textbox, hy mt Label vi TabIndex bng TabIndex ca TextBox tr 1. Gi s Label c Caption l "&Address" th ALT+A s mang Tab Cursor v TextBox mu vng nh trong th d di y:

Hnh III.4 - Minh ho Label Vn bn c hin th trong mt Label c iu khin bi thuc tnh Caption, thuc tnh ny c th c t khi thit k ti ca s Properties hay khi chy bng cch gn tr cho n trong m chng trnh. Mc nh, Caption l phn duy nht nhn thy c ca Label. Ngoi ra, cc thuc tnh khc, nh BackColor, BackStyle, ForeColor, v Font, quy nh hin th ca Label. Labels c 2 thuc tnh gip vn bn trong n ph hp vi kch c ca Label l: AutoSize and WordWrap. - t AutoSize = True khin nhn t thay i kch c va vi ni dung trong thuc tnh Caption.

Hnh III.5 - t thuc AutoSize cho Label


79

- WordWrap = True khin Lable thay i kch c theo chiu dc cha ht vn bn.

Hnh III.6 - t thuc WordWrap cho Label Ch : WordWrap ch c hiu lc khi AutoSize cng c t l True. II.3- Text box Text box (hp vn bn) dng nhp d liu t ngi dng hay hin th d liu. Tuy nhin, khng nn dng Textbox hin th d liu khng c thay i bi ngi dng nu nh khng t thuc tnh Locked l True. Vn bn thc s hin th c lu trong thuc tnh Text. Chng ta c th t vn bn vo Textbox, sa i Text c sn hay cho vo text mi hoc c ni dung qua thuc tnh Text ny. Thuc tnh chnh v ngm nh ca Textbox l text, tc l thng thng Text2.text c th c vit tt l Text2. Ta c th disable (khin n bt lc, khng phn ng g ht v khng cho sa i) mt text box bng cch t thuc tnh Enable ra False (ch s b m i), hay Lock (khng cho sa i) mt text box bng cch t thuc tnh Locked ra True (ch khng b m). Text c th c cn l (Alignment) hin thi bn tri, chnh gia hay bn phi ca hp n.

80

Hnh III.7 - Minh ho ba cch cn l ca textbox Bn c th chn BackColor v ForeColor cho mu nn v mu vn bn ca TextBox. Dng th Palette khi chn mu c ng mt mu bn mun.

Hnh III.8 - t thuc tnh mu nn ca textbox D nhin chng ta c th la chn Font v c ch cho Text vi thuc tnh font. Bn gii hn s characters m Ngi dng c th enter cho TextBox bng cch t gi tr MaxLength. Nu thuc tnh Multiline l True (cho php nhiu dng) th ngi dng c th nhp nhiu hng cho textbox ti thi gian thit k, nu bn mun nhp nhiu dng th phi nh bm nt Ctrl Enter mi khi xung hng nu khng VB6 IDE tng rng bn kt thc nhp.

Hnh III.9 - Textbox nhiu dng Nu bn mun ch dn cho ngi dng v cch dng mt textbox no th c th dng thuc tnh ToolTipText n hin th li ch dn mi khi a con chut ti nm ln textbox, v d:

81

Hnh III.10 - ToolTip ca Textbox Dng thuc tnh TabIndex n nh th t cho Tab dng mi khi ngi dng bm nt TAB di con tr n Textbox k tip. Nu bn khng mun con tr dng mt TextBox no th t gi tr TabStop ca n thnh False. Tab Cursor khng dng Textbox c Thuc tnh Enabled bng False, nhng vn dng Textbox c thuc tnh Locked bng True. Nu bn mun dng Textbox lm mt hp nhp mt khu (Password field) th hy t thuc tnh PasswordChar bng "*". Lm nh th s p buc Textbox hin mi k t bng PasswordChar, tc l "*", ngi khc khng c c trong khi Ngi dng enter mt Paswword.

Hnh III.11 - V d textbox nhp mt khu Cc thuc tnh MultiLine, ScrollBars v WordWrap gip hin th vn bn trong Textbox khi c nhiu dng. Sub Form_Load () Text1.Text = "Here are two Lines" _ & vbCrLf & "in a Text box" End Sub Trong th tc trn, vbCrLf l hng s (cp k t iu khin xung dng) khin chui chia thnh 2 dng. Ch : WordWrap c hiu lc, Multiple cng cn c hiu lc.

82

Cc thuc tnh SelLength, SelStart v SelText Nu bn mun bit c tnh hnh hin thi ca Textbox: SelText cho bn dy ch ang c chn (selected). SelStart cho bn v tr bt u c chn, SelLength cho bit con s k t c chn. Nu bn mun sa i text trong Textbox: SelText cho bn nht vo mt dy ch. SelStart cho bn n nh v tr bt u ca dy ch bn sp chn. SelLength n nh s k t bn mun chn, bt u t SelStart. Di y l mt th d trong ta lm ni mu ca mt on text tm c: Private Sub Form_Click () Dim Search, Where ' Declare variables. ' Get search string from user. Search = InputBox("Enter text to be found:") Where = InStr(Text1.Text, Search) If Where > 0 Then ' If found, Text1.SelStart = Where - 1 ' set selection start and Text1.SelLength = Len(Search) ' set selection length. Else MsgBox "String not found." ' Notify user. End If End sub II.4- Check box Check box (hp nh du) c dng a ra la chn ng/sai, c/khng cho ngi s dng.

Hnh III.12 - Checkbox CheckBox c dng ngi dng xc nhn c c tnh no mt cch nhanh chng. Thuc tnh Value ca CheckBox c th l Checked (lm cho hp vung c du, bng 1), UnChecked (lm cho hp vung trng khng, bng 0) hay Grayed (lm cho hp vung c du mu nht, bng 2). Mt khi

83

bit rng CheckBox c Value bng 1, ta c th c Caption ca CheckBox dng nu cn. v d :

Hnh III.13 - V d s dng Checkbox V d: To mt project: trn form gm: Text box, Label, Command button, v 2 Check box, cho php ngi dng nhp 1 xu k t (trong text box), nu ngi dng chn Bold hoc/v Italic th lm vn bn tr nn m/nghing

Hnh III.14 - V d Checkbox t ch nghing/m Danh sch i tng v thuc tnh t nh sau: i tng Form Text box Thuc tnh Name Caption Name Gi tr frmCheck Check Box Example txtDisplay

84

Text Check box 1 Check box 2 Command button M lnh cc th tc s kin: Private Sub chkBold_Click () If ChkBold.Value = vbChecked Then txtDisplay.Font.Bold = True Else txtDisplay.Font.Bold = False End If End Sub Private Sub chkItalic_Click () If ChkItalic.Value = vbChecked Then txtDisplay.Font.Italic = True Else txtDisplay.Font.Italic = False End If Name Caption Name Caption Name Caption

Some sample text chkBold &Bold chkItalic &Italic cmdClose &Close

' Nu Check c chn.

' Nu Check khng c chn.

' Nu Check c chn.

' Nu Check khng c chn.

End Sub Khi chy chng trnh, nu ch nghing c chn th kiu ch trong hp textbox s l ch nghing, cn nu khng, kiu ch s l khng nghing. Tng t vi ch m. II.5- Option Button v nhm Option Button Option button (nt tu chn) c dng theo nhm c cho php ngi dng chn 1 trong s nhiu la chn.

85

Hnh III.15 - Option button OptionButton (cn gi l RadioButton) c hnh trn vi mt chm gia, thay g hnh vung vi mt gch gia nh CheckBox. Nu mt nt c chn n c gi tr True, ngc li c gi tri False. OptionButton lun lun c qui t thnh mt nhm, cha trong mt container. Container l mt Control c kh nng cha cc Controls khc. Frame, PictureBox, hay chnh Form u l Container. Sau khi t mt Container ln Form, nu mun mt OptionButton ln Container, trc ht ta phi chn container, ri k chn OptionButton. S d, tt c OptionButtons phi nm trong mt container l v bt c lc no, nhiu nht l mt OptionButton trong container c gi tr True (vng trn c chm gia). Mun bit mt OptionButton c tht s nm trong mt container, bn th ko ci container i ch khc. Nu OptionButton b di theo container th n nm trong container. Mt cch khc l th ko OptionButton ra khi container. Nu ko ra c th n khng nm trong container. Mun di chuyn mt OptionButton t container ny sang container khc, bn Cut OptionButton ri dn (Paste) n vo container kia.

Hnh III.16 - Nhm cc Option button i khi mt container nm che trn mt control khc. Mun mang mt container ra pha sau cc Controls khc bn chn container d ri dng Menu command Format | Order | Send to Back.

86

Hnh III.17 - a mt iu khin ra sau II.6- To nhm Option Button Tt cc Option button c t trc tip ln Form to thnh 1 nhm. Nu mun to thm cc nhm, nhng Option button thuc nhm mi phi c cng t trong 1 Frame box hay Picture box.

Hnh III.18 - To nhm cc Option button Ngi dng ch c th chn 1 tu chn trong mi nhm. II.7- Cch nhm cc Control trong mt Frame 1. Chn Frame Control trn Toolbox v v ln Form. 2. Chn Option button Control trn Toolbox v vo trong Frame. 3. Lm li bc 2 cho mi Option button cn t trong Frame. Nu chng ta c sn cc Control mun nhm gp vo trong 1 Frame, hy chn cc Control ri ct v dn chng vo trong Frame hay Picture Control.

87

II.8- i tng cha cc Control Tuy mi Control v 1 i tng c lp, quan h cha-con tn ti gia Form v Control. V d: Cc Option button c cha trong 1 Frame, v Frame ny c cha trong 1 Form. Thc s, mi khi v 1 Control ln Form, mi Control thng cha 1 thuc tnh Parent ch ti Form m Control c t trn. Cc thuc tnh Left v Top chng hn s xc nh v tr tng i ca Control trong Form cha. II.9- V d chng trnh v Options Xy dng chng trnh vi giao din:

Hnh III.19 - Yu cu form chng trnh minh ho Option Khi ngi dng chn b x l, chn h iu hnh, th hp text box s hin th thng bo chn tng ng. Bng cc i tng v thuc tnh: i tng Label Command button Option button 1 Option button 2 Thuc tnh Name Caption Name Caption Name Caption Name Caption
88

Gi tr LblDisplay (Empty) CmdClose &Close opt486 &486 opt586 &Pentium

Option button 3 Frame Option button 4 Option button 5 Cc th tc s kin:

Value Name Caption Name Caption Name Caption Name Caption Value

True opt686 P&entium Pro fraSystem &Operating System optWin95 Windows 95 optWinNT Windows NT True

Private Sub opt586_Click() strComputer = "Pentium" Call DisplayCaption End Sub Sub DisplayCaption() lblDisplay.Caption = "You selected a " & _ strComputer & " running " & strSystem End Sub

II.10- List box v Combo box C hai loi List Controls dng trong VB6. l Listbox v Combobox. C hai u c ni dung l mt danh sch cc Item (phn t), v cho php hin th mt s hng ta c th la chn. v d:

list box

combo box

89

Hnh III.20 - List box v combo box Listbox chim mt khung ch nht, nu chiu ngang nh th c khi khng hin th y mt hng, nu chiu di khng hin th tt c mi hng th Listbox t ng cho ta mt thanh cun dc cho bit cn c nhiu hng b che v ta c th xem cc hng y bng cch dng con chy trn thanh cun. Combobox thng thng ch hin th mt hng, nhng ta c th chn hin th bt c hng no khc. Combobox ging nh mt tp hp ca mt Textbox nm pha trn v mt Listbox nm pha di. Listbox v Combox, khc vi Text box, cha nhiu gi tr. Hai Control ny c sn cc phng thc thm, bt, ly gi tr t chng. Listbox c rt nhiu cng dng v n rt uyn chuyn. Trong chng ny ta s hc qua cc p dng sau ca Listbox: Display nhiu s la chn User selects bng cch click hay drag-drop II.10.1- Listbox Ta hy bt u vit mt chng trnh gm c mt Listbox tn lstNames nm trong mt Form. Trong dng (thuc tnh) list ca lstNames ta nh vo tn ca by ngi, mi ln xung hng nh nh Ctrl-Enter, thay v ch Enter, nu khng VB6 tng ta nh xong nn ng List. Cc tn ny l nhng hng s hin ra trong Listbox khi ta bt u chy chng trnh. Nhng cch dng Property Sorted Cch dng Multiselect Dng display Events Dng Search hay process text Cch dng Itemdata song song vi cc Items ca List Dng lm Queue

90

Hnh III.21 - Cc thuc tnh ca List box Ngoi lstNames ta cho thm mt Label vi Caption STUDENTS trang hong, v mt Label khc tn lblName. Mi khi ngi dng bm chut ln hng tn no th chng trnh hin th hng tn y trong lblName. Sau cng ta cho vo mt nt lnh tn CmdExit cho kt thc chng trnh. Ta s c m lnh chng trnh nh sau: Private Sub lstNames_Click() ' Assign the selected line of Listbox lstNames to Caption of Label lblName lblName.Caption = lstNames.List(lstNames.ListIndex) ' or = lstNames.text End Sub Private Sub CmdExit_Click() End End Sub

Gi s ta click vo tn John Smith trn Listbox, ta s thy tn y cng c hin trong lblName.

91

Hnh III.22 - V d s dng List box Trong th d ny, Listbox lstNames c 7 hng (Items), S Items ny l gi tr ListCount ca Listbox. Cc Items ca Listbox c m t 0 n ListCount-1. Trong trng hp ny l t 0 n 6. Khi ngi dng click chut ln mt hng, Listbox s pht sinh s kin lstNames_Click. Lc by gi ta c th bit c ngi dng va mi Click hng no bng cch hi kim tra gi tr ListIndex ca lstNames, n s c gi tr t 0 n ListCount-1. Lc chng trnh mi chy, cha ai Click ln Item no ca Listbox th ListIndex = -1. Nhng Items trong Listbox c xem nh mt mng cc xu (string). mng ny c gi l List. Do , ta ni n Item th nht ca Listbox lstNames bng cch vit lstNames.List(0), v tng t nh vy, Item cui cng l lstNames.List(lstNames.ListCount-1). Ta c th ni n item va c bm bng hai cch: hoc l lstNames.List(lstNames.ListIndex), hoc l lstNames.text. II.10.2- Ghi ni dung ca Listbox By gi lu tr ni dung ca lstNames, ta thm mt nt lnh tn CmdSave. Ta s vit lnh khi ngi dng bm nt CmdSave th chng trnh s m mt file vn bn v ghi ni dung cc items ca lstNames vo : Private Sub CmdSave_Click() Dim i, FileName, FileNumber 'FileName = App.Path If Right(FileName, 1) <> "\" Then FileName = FileName & "\" FileName = FileName & "MyList.txt" ' file cn ghi
92

FileNumber = FreeFile Open FileName For Output As FileNumber m file ghi For i = 0 To lstNames.ListCount - 1 Print #FileNumber, lstNames.List(i) ghi Item vo file Next Close FileNumber ' Close the output file End Sub Gii thch: App l mt Object c bit i din cho chnh ng dng ang chy. y ta dng gi tr ca thuc tnh Path bit lc chng trnh ang chy th th mc hin ti ca n l g, v chng ta t file ghi ni dung ca list box ti . App cn c mt s thuc tnh khc cng rt hu dng nh PrevInstance, Title, Revision ..v.v. vit ra mt file trc ht ta cn phi m (open) n trong mode Output v tuyn b t nay tr i s dng mt con s (FileNumber) i din File thay v dng chnh FileName. trnh dng mt FileNumber c s dng bi phn khc, tt nht ta yu cu h iu hnh cung cp cho mnh mt con s cha ai dng bng cch gi hm FreeFile. Con s FileNumber ny cn uc gi l FileHandle (th file). Khi hon tt vic ghi chng ta phi ng file bng lnh Close Filenumber, sau khi ta ng FileNumber con s ny tr nn FREE v h iu hnh s c th dng n li. Do bn phi trnh gi FreeFile lin tip hai ln, v OS s cho bn cng mt con s. Tc l, sau khi gi FreeFile phi dng n ngay bng cch Open mt File ri mi gi FreeFile ln k c mt con s khc. II.10.3- Np ni dung mt file vn bn vo Listbox Trong yu cu ny, thay v nh cc Items ca Listbox vo thuc tnh List ca lstNames ta c th c cc Items t mt file vn bn. Ta th thm mt nt lnh tn l CmdLoad. Ta s vit code khi ngi dng bm nt CmdLoad th chng trnh s m mt file vn bn v c tng hng a vo lstNames: Private Sub CmdLoad_Click() Dim i, FileName, FileNumber, anItem
93

' Obtain Folder where this program's EXE file resides FileName = App.Path ' Make sure FileName ends with a backslash If Right(FileName, 1) <> "\" Then FileName = FileName & "\" FileName = FileName & "MyList.txt" FileNumber = FreeFile Open FileName For Input As FileNumber lstNames.Clear ' Clear the Listbox first Do While NOT EOF(FileNumber) Line Input #FileNumber, anItem ' c tng dng vo anItem lstNames.AddItem anItem ' Add this item to the bottom of lstNames Loop Close FileNumber ' Close the input file End Sub Cng nh trong trng hp ghi, c t mt file ta cn phi m n trong mode Input. Trc khi c cc mc ta cn phi xo tt c mi items c sn bn trong list. thc hin vic ta dng phng thc Clear ca Listbox. Sau ta dng phng thc AddItem cho thm tng hng vo trong Listbox. ngm nh, nu ta khng ni thm vo hng (ch s) no th AddItem s thm mt item vo cui ca Listbox. Nu mun thm hng mi vo ngay trc item th 5 (ListIndex = 4), ta vit: lstNames.AddItem newItemString, 4 hoc thm vo v tr u tin ta vit lstNames.AddItem newItemString, 0 Nh l mi ln chng ta thm mt Item vo Listbox th ListCount ca Listbox tng 1. Mun xo mt item t Listbox ta dng RemoveItem, th d nh mun xo item th ba (ListIndex=2) ca lstNames, ta vit: lstNames.RemoveItem 2 Mi ln bn xo mt item trong Listbox the ListCount ca Listbox gim 1. Ta c tng hng ca mt file vn bn bng cch dng

94

Line Input #FileNumber. Khi c n cui File, h thng s cho ta gi tr EOF(FileNumber) bng True. Ta cn c vo iu cho chng trnh thot ra khi While.. Loop. II.10.4- Dng thuc tnh Sorted Trong th d trn ta c th quyt nh v tr ca mt Item mi khi ta thm n vo Listbox. i khi ta mun cc Items ca Listbox c t ng sp theo th t no (chng hn nh theo th t Alphabet). Chng ta c th t gi tr ca Sorted l True thc hin chuyn ny. C mt gii hn l bn phi cho xc nh gi tr ca Sorted (True hay False) trong lc thit k, ch trong khi chy program bn khng th lm cho gi tr ca Sorted ca Listbox thay i. Gi s ta mun sp xp cc Items ca mt Listbox khi cn, vy th ta lm sao? Gii php rt n gin. Bn to mt Listbox khc tn lstTemp chng hn. Cho n thuc tnh Visible l False ( khng ai thy n) v Sorted l True. Khi cn sp xp lstNames chng hn, ta sao chp ni dung ca lstNames vo lstTemp, ri xo lstNames v sau na copy cc Item ( c sp xp) ca lstTemp tr li lstNames. Lu l ta c th AddItem vo mt Listbox vi c Sorted=True, nhng khng th xc nh Item vo trc hng no, v v tr ca cc Items do Listbox quyt nh khi n sp xp cc Items. V d: Ta hy cho thm vo Form mt nt lnh mi tn CmdSort v vit m cho CmdSort_Click ca n nh sau: Private Sub CmdSort_Click() Dim i lstTemp.Clear ' Clear temporary Listbox For i = 0 To lstNames.ListCount - 1 lstTemp.AddItem lstNames.List(i) Next lstNames.Clear ' Clear lstNames For i = 0 To lstTemp.ListCount - 1 lstNames.AddItem lstTemp.List(i)

95

Next lstTemp.Clear End Sub II.10.5- Listbox c nhiu ct Listbox c mt thuc tnh l Columns. Bnh thng, Columns c gi tr 0. Nhng nu bn cho n bng 3 chng hn, th Listbox s c gng hin th 4 ct trong phm vi chiu ngang ca Listbox. Nu nh th vn khng hin th ht mi Items trong Listbox th s c mt thanh cun ngang hin ra, cho php chng ta cun vng nhn ca listbox. v d nh hnh di y:

Hnh III.23 - List box c hiu ct II.10.6- Listbox cch dng MultiSelect Cho n gi ngi s dng ch chn c mt Item trong listbox. Khi mt Item c chn th hng y tr nn sng (i mu) vi background mu xanh m. Nu k ta click mt hng khc th hng c tr li bnh thng(khng c chn) v hng mi c chn. Listbox cn c th cho ta c th chn nhiu Items cng mt lc bng cch t thuc tnh MultiSelect = Extended

Hnh III.24 - t thuc tnh MultiSelect


96

i vi MultiSelected Listbox, ta chn mt nhm Items lin tc bng cch bm chn Item u ri nhn nt Shift trong khi bm chn Item cui. Ta cng c th tip tc chn hoc b chn bng cch n nt Ctrl trong khi bm chut ln cc Item. Nu ta bm trn mt Item cha c chn th n s tr nn c chn (highlighted mu xanh), v ngc li nu ta bm trn mt Item c chn ri th n s khng c chn na (khng cn mu xanh na). Th d trong chng trnh bn chn "Peter Jones", k n nt Shift trong khi bm chn "Sue Rose", k bung nt Shift ra n nt Ctrl trong khi bm "Kevin White", bn s c nhng Items c chn nh trong hnh di y:

Hnh III.25 - V d chn nhiu mc ca List box Ngoi ra bn cng c th chn nhiu Items trong mt Listbox bng cch dng chut drag, tc l bn bm nt chut ln Item u ri tip tc nt chut trong khi ko chut n Item cui cng mi bung nt chut ra. V d: Di y l mt p dng ca Listbox MutiSelect: Th tc PrintList in ra c Listbox hay ch nhng hng c chn. Th tc PrintList nhn: Listbox (theList) m ta mun in mt gi tr Boolean (PrintAll) m nu l True th in c Listbox Title: tiu in ra Sub PrintList(theList As ListBox, PrintAll as Boolean, Title As String) ' Print the whole lot or only selected lines in a listbox ' PrintAll = True means printing the whole content of the listbox Const MaxLinesPerPage = 50

97

Dim msg, i, j, PageNo, NumLines, HasSome, Margin HasSome = False ' Flag indicating existence of data Margin = Space(10) ' Make a margin of 5 characters Title = vbLf & vbLf & Title + vbCrLf & vbLf NumLines = 0 ' Init number of lines on this page PageNo = 1 ' init Page number msg = Title ' Msg will contain everything starting with Title Printer.FontName = "Courier New" ' Initialise Printer Fontname Printer.FontSize = 10 ' Initialise Printer FontSize Screen.MousePointer = vbHourglass ' Change mousepointer shape to Hourglass. If theList.ListCount > 0 Then ' get here if the listbox is not empty For i = 0 To theList.ListCount - 1 ' Go thru each line of text in the listbox If theList.Selected(i) Or PrintAll Then ' print a line of text if it's selected or PrinAll is true DoEvents ' Let other processes have a chance to run HasSome = True NumLines = NumLines + 1 ' Increment count of lines If Left(theList.List(i), 1) = "'" Then ' if first character is "'" then use this as an indication to force a new page If NumLines > 0 Then ' Add extra blank lines to make up a page before inserting page number For j = NumLines - 1 To MaxLinesPerPage msg = msg & vbCrLf Next j

98

' Insert Page number at end of page msg = msg & Space$(35) & "Page-" & CStr(PageNo) Printer.Print msg Printer.NewPage ' Send new page. NumLines = 1 ' reset Number of lines, counting this current line PageNo = PageNo + 1 ' Increment Page number msg = Title ' Reset Msg to contain Title for new page ' Append this current line, ignoring character "'" msg = msg & Margin & Mid(theList.List(i), 2) & vbCrLf Else ' Blank page so far - so just appending this line, ignoring character "'" msg = msg & Margin & Mid(theList.List(i), 2) & vbCrLf End If Else ' Normal line - just keep appending it to Msg msg = msg + Margin & theList.List(i) & vbCrLf End If theList.Selected(i) = False ' Clear highlight of selected line, ie. deselect it If NumLines > MaxLinesPerPage Then ' Start new page if page already full If PageNo > 1 Then ' Insert page number at the bottom, except for first page msg = msg + vbCrLf & Space$(35) & "Page-" & CStr(PageNo) End If Printer.Print msg ' Output all data of this page Printer.NewPage ' Send new page. NumLines = 0

99

PageNo = PageNo + 1 msg = Title End If End If Next i End If ' Get here after going thru all lines in the listbox If NumLines > 0 Then ' complete the last page by inserting page number For i = NumLines To MaxLinesPerPage msg = msg & vbCrLf Next i If PageNo > 1 Then msg = msg + vbCrLf & Space$(35) & "Page-" & Str$(PageNo) End If Printer.Print msg ' Output all data of this page End If If HasSome Then Printer.EndDoc ' Initiate the actual Print. Else Beep MsgBox "Nothing to print, try selecting a range of lines first" End If Screen.MousePointer = vbDefault ' Change mousepointer shape back to normal End Sub Ta gi PrintList in nhng Items c selected trong Listbox lstNames nh sau: Private Sub CmdPrint_Click() PrintList lstHexadecimal, True, "*** EVENT LOG IN HEX ***"
100

End Sub II.10.7- Thm Horizontal Scrollbar vo Listbox C l bn thy c hai Listboxes lstASCII v lstHexadecimal u c Horizontal Scrollbar pha di. By default, Listbox khng c Horizontal Scrollbar. Mun to ra n bn phi thm hai cu di y vo mt Basic module: Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Global Const LB_SETHORIZONTALEXTENT = &H194 K trong Sub Form_Load gi Function SendMessage qua Application Programming Interface (API) yu cu Listbox cho hin ra Horizontal Scrollbar. Dim VLong As Long ' make a horizontal scrollbar for both Listboxes VLong = SendMessage(lstAscii.hwnd, LB_SETHORIZONTALEXTENT, lstAscii.Width, ByVal 0) VLong = SendMessage(lstHexadecimal.hwnd, LB_SETHORIZONTALEXTENT, lstHexadecimal.Width, ByVal 0)

II.10.8- Listbox c nt nh du (checkbox) Nu bn chn gi tr Style ca Listbox l CheckBox thay v Standard th mi mc trong Listbox s c mt hp vung pha trc ngi s dng c th chn lc chy chng trnh. Hp vung ca mc no c Checked (nh du) th Item y c chn. Gi s ta c mt Listbox List1 vi Style Checkbox v c nhiu Items mua trong siu th. Khi chy chng trnh, ngi s dng chn mt s items ri click nt Process, program s hin th cc item c chn.

101

Hnh III.26 - ListBox c nt nh du Listing ca Sub CmdProcess_Click nh sau: Private Sub CmdProcess_Click() Dim Mess As String ' get out if there's nothing in the list If List1.ListCount = 0 Then Exit Sub ' Iterate through every item of the CheckBox Listbox For i = 0 To List1.ListCount - 1 ' If item is selected then include it in the shopping list If List1.Selected(i) Then ' Append Item and a Carriage Return-LineFeed Mess = Mess & List1.List(i) & vbCrLf End If Next ' Display shopping list MsgBox Mess, vbInFormation, "Selected Shopping Items"

End Sub V d v ListBox - Dng Listbox hin th Event Log

102

Trong th d sau y ta mun hin th thng tin vo t mt serial COM port ( c data tht qua serial COM port ta phi dng control MsCOMM c hnh telephone mu vng trong ToolBox). Nhng tin vic biu din, thay v c mt message t mt serial COM port, ta s m phng n bng cch dng mt ComboBox. Khi ngi s dng chn mt hng t ComboBox cboInput th ta xem cboInput.text nh data c t serial COM port. Lp tc lc y ta s hin th thng tin trong hai dng: ASCII v HEX. Mi hng u c ngy v gi trc khi c cho vo hai Listboxes lstASCII v lstHexadecimal. Hnh di y cho thy Form ang hin th trong ASCII mode.

Nu bn bm chut vo Display in HEX th tiu ca nt i thnh Display in ASCII, lstASCII tr nn n v lstHexadecimal s hin ra nh sau:

Di y l m lnh ca hm HexDisplay i t ASCII ra Hexadecimal Function HexDisplay(InASCII) As String ' Convert an ASCII string to HEX string Dim InLen, i, msg, HexStr InLen = Len(InASCII) ' Get length of input string ' Convert each ASCII character to Hex For i = 1 To InLen HexStr = Hex(Asc(Mid(InASCII, i, 1)))
103

' If HEX has only one digit then prefix it with 0 If Len(HexStr) = 1 Then HexStr = "0" & HexStr msg = msg + HexStr & " " Next i HexDisplay = msg ' Return result string for Function End Function Trong chng trnh ny, khi Listbox t n 1000 items th mi ln mt hng mi c thm vo, hng c nht s b xo. cho hng mi nht khng b du ta phi nh cho ListIndex ca Listbox bng Listcount-1 Listbox t ng cun v lm sng hng cui. Mi khi ta thm mt hng vo Listbox lstHexadecimal, ta cng ng thi vit n vo mt LogFile. Tn ca LogFile ny da vo ngy ly t h thngv c dng nh Hex30Jun01.log. Tc l ta s dng mt LogFile khc cho mi ngy. Mi khi qua ngy mi, chng trnh t ng dng mt LogFile mi. Nh l khi mun vit vo mt text file theo tn g , nu file cha hin hu th ta phi to n v vit vo, nu file hin hu ri ta ch cn thm (append) hng mi vo cui file (phi cn thn ch ny, v nu khng, ta v ghi ln file v mt ht nhng g n cha trc y). Sub DisplayInHEX(inString) Dim Mess, LogFileName ' Convert ASCII to Hex Mess = HexDisplay(inString) ' Prefix with date and time and add it to the bottom of Listbox lstHexadecimal.AddItem Format(Now, "dd/mm/yyyy hh:nn:ss") & " " & Mess ' Keep only the latest 1000 events If lstHexadecimal.ListCount >= 1000 Then ' Remove the first Item, i.e. the oldest item lstHexadecimal.RemoveItem 0 End If ' Highlight the lattest item in the Listbox
104

lstHexadecimal.ListIndex = lstHexadecimal.ListCount - 1 ' Use different log file each day. Filename has Format like Hex15Jun01.log LogFileName = "Hex" & Format(Now, "ddmmmyy") & ".log" ' Log to file including Date and Time LogEvent LogFileName, Mess, False, 2 End Sub II.10.9- Combobox Combobox rt ging nh Listbox. N l tp hp ca mt Textbox nm pha trn ngi dng cho vo d liu v mt Listbox cha cc items m ngi dng c th la chn khi m n ra. Combo box cng c nhng methods nh Clear, AddItem v RemoveItem. Tuy nhin, Combobox khng c thuc tnh Selected, v khi ngi dng chn Item no th Item y c hin th trong Textbox pha trn. Combobox c 3 kiu:

Drop-down Combo l thng dng nht. N cho ngi dng tu hoc chn mt Item t List hoc g t bn phm vo Textbox. Trong hnh di y ngi dng nh vo ch Elephant thay v chn t cc Items c sn.

Hnh III.27 - Combo box


Simple Combo: cng tng t nh trn nhng n gin l chn mt mc no th dng cc phm mi tn ln / xung chn. Drop-down List: bt buc ngi dng phi chn mt trong nhng Item nm trong List, ch khng c g vo t bn phm.

105

Chng IV- TO MENU CHO NG DNG I- H thng menu H thng menu (thc n) cho ta nhm cc lnh mt cch thun tin v thng nht, menu gip ngi dng d dng truy nhp chc nng/lnh ca chng trnh.

Hnh IV.1 - Menu Trong Menu c th l: command (lnh - v d nh New v Exit), separator bar (gii phn cch), nhn submenu (menu con). Mi item tng ng vi mt Control menu bn nh ngha trong Menu Editor (s gii thiu sau). chng trnh ng dng d dng, chng ta nn nhm cc menu item theo chc nng. Mt s menu item thc hin hnh ng mt cch trc tip; v d, menu item Exit trong menu File ng ng dng. Mt s menu item khc hin mt dialog box mt ca s yu cu ngi dng nhp thng tin cn thit cho ng dng, v d: open trong menu File.
106

Mt Control menu l mt i tng (object); n c cc thuc tnh dng nh ngha din mo b ngoi v hnh vi ca n. Ta c th t cc thuc tnh ca chng nh: Caption, Enabled Visible, Checked ... khi thit k hoc khi chy. Menu Control ch cha mt s kin Click, s kin ny c sinh ra khi Control menu c chn bng chut hoc bn phm. II- S Dng Menu Menu trong Windows l ni tt c cc lnh/chc nng ca mt chng trnh c sp xp trt t theo tng loi gip ta dng d dng. C hai loi menu ta thng gp: drop-down (th xung) menu v pop-up (hin ln) menu. Thng thng chng ta dng drop-down menu lm Menu chnh cho chng trnh. V n thng nm pha trn cng ca ca s ng dng. Nm dc theo chiu ngang l Menu Bar, nu ta click ln mt lnh trong Menu Bar th chng trnh s th xung mt menu vi nhng MenuItems nm dc theo chiu thng ng. Nu ta click ln MenuItem no c du hnh tam gic nh bn phi th program s popup mt Menu nh trong hnh di y (khi ta click Format | Make Same Size):

Hnh IV.2 - S dng Menu III- Menu Editor - Cng c Xy dng menu Dng thm lnh mi cho cc menu sn c, thay th lnh c sn ca menu bng lnh t to, hoc to, sa, xo menu v menu bar. Ta dng Menu Editor to hoc sa mt Menu cho mt ng dng. Menu thuc v mt Form. Do , trc ht ta chn mt Form lm vic vi b thit k ca n (ch khng phi m lnh ca Form). Tip theo ta dng chc nng Menu Editor (bng cch chn Tools | Menu Editor hay bm
107

chut ln icon ca Menu Editor trn Toolbar-hoc bm phm tt CTRL-E ) bt u lm vic vi Menu Editor.

Hnh IV.3 - Khi ng Menu Editor u tin c mt vt mu xanh nm trong khung trng ca Menu Editor, ni s hin th tiu (caption) ca mc menu u tin ca Form. Khi ta nh ch &File vo hp Caption, n cng hin ra trn vt xanh ni trn. Tip theo, chng ta c th nh tn ca lnh Menu vo hp Name. D ta cho cc lnh Menu mt tn nhng ta t khi dng n, tr trng hp mun n hin ra hoc lm n mt hiu lc (visible/invisible). Bnh thng ta dng tn ca mc menu nhiu hn.

Hnh IV.4 - Thit k menu

108

C th t hu ht cc thuc tnh ca menu Control ti Menu Editor; nhng mi thuc tnh u c trong ca s Properties.

Hnh IV.5 - t thuc tnh ca mc menu c mt Menu nh trong hnh di y ta cn phi to thm vo cc MenuItems Open, Save, Close v Exit.

Hnh IV.6 - Menu ca ng dng cn xy dng Hnh di y cho thy tt c cc MenuItems ca Menu File u nm tht qua bn phi vi bn du chm (....) pha trc. Khi ta bm chut trn du tn ch qua phi () trn cng c ca menu editor th MenuItem ta ang son s c thm bn du chm, tc l tht mt bc trong Menu .

109

Hnh IV.7 - Bc ca cc mc ca menu Tng t nh vy, khi ta bm nt du tn ch qua tri () th MenuItem ta ang son s mt bn du chm, tc l tng mt bc trong Menu. Nu mun cho php ngi dng dng phm tt (Alt <key>) chn mt mc ca Menu lc chng trnh chy th chng ta thm du & trc k t c n nh lm phm tt trong Caption ca n. Th d Alt-F s th xung Menu ca Menu File th ta thm & trc F. Nu bn t cho menu &Open tn mnuOpen, th khi bn bm chut ln Caption n trn Form trong lc thit k, VB6 IDE s hin th ci v ca th tc x l mnuOpen_Click(), ging nh cc th tc s kin ca control khc: Private Sub mnuOpen_Click() MsgBox "You clicked mnuOpen" End Sub Trong th d trn khi chng trnh chy, nu ta chn Open s hin th mt thng bo n gin "You clicked mnuOpen". Bn c th t cho mt MenuItem tn g cng c, nhng ngi ta thng dng tip u t mnu d phn bit mt menuItem vi mt nt lnh hay cc control khc. Do , ta c nhng tn mnuFile, mnuOpen, mnuSave, mnuClose, mnuExit.
110

Dng gch ngang gia mc Close v Exit c gi l di phn tch (Separator). Bn c th thm di phn tch bng cch cho Caption n l du tr ( - ). III.1- Thm phm g tt vo Menu Cc menu item chun ca Windows c sn shortcut key. i vi cc menu item t to, bn ch c th s dng Menu Editor son shortcut. S dng shortcut key (cn gi l accelerator keys) l mt cch khc gi chc nng t bn phm. Bn chn t hp shortcut key bng cch chn mt t hp t danh sch Shortcut Menu Editor. Shortcut key c hiu lc mi ni trong chng trnh, khng ph thuc menu item c ang hin ra hay khng. Ngi dng c th goi thng chc nng m khng phi thc hin chn menu. Ngoi cch chn mt mc menu bng Alt-<key> ta cn c th cho ngi dng dng phm g tt (access key) ca menuItem (chng hn nh CTRL-O chn lnh Open trong menu File). gn cho MenuItem mt phm tt, bn chn cho n mt t hp phm tt t ComboBox Shortcut trong Menu Editor. Ch :
-

Khng nn t 2 access key bng 2 ch ci ging nhau trong cng mt submenu. Khng t access key cho mc menu mc trn cng

Access key c nhm theo menu. Bn c th c cc access key khc nhau vi cng ch ci - v d, Save and Paste Special--nu chng nm cc menu khc nhau. Nu t 2 access key vi cng ch ci trong cng 1 submenu, key u tin s c thc hin trc. Khi bm access key ln th hai, menu item tip theo c key tng ng s c chn. Access key rt c ch trong cc chng trnh i hi s dng nhiu n bn phm v khng phi ngng nh my dng chut khi mun thc hin mt chc nng no . Trong hnh di y ta chn Ctrl+O cho mnuOpen.

111

Hnh IV.8 - Chn access key cho mc Open

Ngm nh, menuItem c Enabled v Visible. Lc thit k bn c th cho MenuItem gi tr khi u ca Enabled v Visible bng cch dng Checkboxes Enabled v Visible. Trong khi chy chng trnh, chng ta cng c th thay i cc gi tr ca chng v d vi mc Save bn thc hin: mnuSave.Enabled = False mnuOpen.Visible = False Khi mt MenuItem c Enabled=False th n b m v ngi dng khng dng c n. Bn dng cc du mi tn ch ln v xung (,) trong Menu Editor di chuyn MenuItem c chn ln v xung trong danh sch cc MenuItems. Bn dng nt lnh Delete hy b MenuItem c chn, Insert chn thm mt MenuItem mi ngay trn MenuItem c chn v Next thm MenuItem ngay di MenuItem c chn.

112

Hnh IV.9- Dich chuyn/thm cc mc ca menu III.2- t thuc tnh cho Menu Bng cc thuc tnh thng dng ca Menu Object Thuc tnh Gi tr/Kiu Caption Checked Enabled Name Shortcut String Boolean Boolean String N/A M t text hin trn menu bar. t 1 Check mark trc Caption ca menu item. Cho s dng menu item nu c gi tr True. Tn ca object--ch t khi thit k. T hp phm cho ta gi chc nng ca menu item. Bn ch c th t khi thit k, chn t mt danh sch Shortcut trong Menu Editor. Lm mt menu bc trn cng ca mt MDI Form hin mt danh sch window ang m trong MDI Form-- ch t khi thit k.

WindowList Boolean

Ch t gi tr cho cc thuc tnh Name v Caption. Caption c gi tr null ("") s lm cho menu item hin di dng 1 dng trng trn menu bar. IV- Pop-up Menu Pop-up menu l mt menu ni, hin ln trn mt Form, c lp vi menu bar. Cc item hin trn pop-up menu ph thuc vo v tr ca con tr
113

khi nhn phm phi chut; do , pop-up menu cn c gi l context menu (hay menu ng cnh). Ta nn dng cc pop-up menu cung cp mt phng thc hiu qu truy nhp cc command thng dng trong cc ng cnh.

Hnh IV.10 - Menu popup Mi menu c t nht 1 menu item u c th c hin di dng mt pop-up menu khi chy. hin mt pop-up menu, s dng phng thc PopupMenu. i vi ngi dng, ang khi lm vic vi mt i tng trong Windows tin nht l ta c th lm hin th Context Menu (Menu p dng cho ng tnh hung) bng mt thao tc bm chut. Thng thng l bm nt chut phi. Chnh Pop-Up menu tht ra l Drop-down menu ca mt mc (menu con) ca Menu Bar. Bnh thng Menu Bar y c th visible hay invisible . Trong hnh di y, khi ngi dng bm chut phi trn Form, mnuEdit s hin ln. Nu bnh thng bn khng mun cho ngi s dng dng n trong Main Menu th bn cho n invisible:

Hnh IV.11- Hin menu ng cnh


114

M lnh lm cho Popup menu hin ln c vit trong th tc x l s kin Mousedown ca mt i tng m tnh c y l ca chnh Form: Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) ' Popup the Edit Menu if User clicked the Right Button of the Mouse If Button = vbRightButton Then PopupMenu mnuEdit End If End Sub Ngay c khi bn mun cho mnuEdit bnh thng l invisible, bn cng nn cho n visible trong lc u tin vit code dng x l s kin click ca nhng MenuItems thuc v mnuEdit nh mnuCopy, mnuCut v mnuPaste. IV.1- To Pop-Up Menu Bn c th lm mt menu bt k hin di dng mt pop-up menu bng cch s dng phng thc PopupMenu ca Form: PopupMenu <mnuName> trong <mnuName> l tn mt menu pop-up c thit k V d: hin menu file khi ngi s dng bm chut phi Private Sub Form_MouseDown (Button As Integer, _ Shift As Integer, X As Single, Y As Single If Button = 2 Then PopupMenu mnuFile End If End Sub chy on m trn, bn cn to 1 Form c 1 menu Control c tn mnuFile, trong c cha t nht 1 menu submenu. Vit on m trn trong module ca Form. V- Cha thit lp ca menu trong Registry Gi s chng trnh ca bn cho ngi s dng mt la chn WordWrap nh di y:
115

Hnh IV.13 - Ghi trng thi thit lp ca menu Bn mun chng trnh nh la chn m ngi s dng chn, ln ti khi Ngi s dng khi ng chng trnh th la chn WordWrap cn gi nguyn gi tr nh c. Cch tin nht l cha gi tr ca la chn WordWrap nh mt Key trong Registry. Registry l mt loi c s d liu c bit ca Windows dng cha nhng d kin lin h n Users, Hardware, Configurations, ActiveX Components ..v.v. dng trong my tnh. Trong Registry, d liu c sp t theo tng loi theo ng cp. Bn c th son tho trc tip tr s cc Keys trong Registry bng cch dng Registry Editor.

Hnh IV.14 - Registry Editor Trong chng trnh ny ta cng nhn tin bt chng trnh lu tr v tr ca Form khi chng trnh kt thc, ln ti khi ngi s dng khi ng li chng trnh th n s c v tr lc u ging y nh trc.
116

Ta s dng th tc SaveSetting lu gi tr Checked ca mnuWordWrap v Left, Top ca Form. M lnh ta s trong th tc s kin Form_QueryUnload v n s c thc hin ngay trc khi Form b Unload. Private Sub Form_QueryUnload(Cancel As Integer, _ UnloadMode As Integer) SaveSettings End Sub Private Sub SaveSettings() ' Save Location of the Form SaveSetting App.Title, "Location", "Left", Me.Left SaveSetting App.Title, "Location", "Top", Me.Top ' Save the setting of WordWrap in menu SaveSetting App.Title, "Settings", "WordWrap", _ mnuWordWrap.Checked End Sub App.Title l Ta ca program. Thng thng n l tn ca Project, nhng bn c th sa n trong Project Property Dialog (Tab Make): Khi lu gi tr ca mt th g (ta gi l Key) vo Registry bn c th sp t cho n nm trong Section no ty . y ta t ra hai Sections tn Location cha Top,Left ca Form v tn Settings cha Key mnuWordWrap.Checked. Mun cho chng trnh c cc gi tr ca Keys cha trong Registry khi n khi ng ta ch cn dng hm GetSetting trong th tc Form_Load c vo t Registry nh di y: Private Sub Form_Load() ' Initialise Location of the Form by reading the Settings from the Registry Me.Left = Val(GetSetting(App.Title, "Location", "Left", "0"))
117

Me.Top = Val(GetSetting(App.Title, "Location", "Top", "0")) ' Initialise setting of WordWrap in the menu mnuWordWrap.Checked = ( GetSetting(App.Title, "Settings", _ "WordWrap", "False") = "True" ) End Sub Lc u khi cha c g trong Registry th "0" (string "0" c converted bi Val ra 0) l gi tr ngm nh cho Left v Top, cn "False" l gi tr ngm nh ca mnuWordWrap.Checked. VI- V d v Menu Chng trnh Amazing Text Editor (TextEdit.vbp) c th thc hin cc tc v sau:

To file mi M file Lu file o cu hnh mu ch, mu nn ca trnh son tho Cung cp thng tin v bn quyn Dng chng trnh Undo hnh ng va thc hin Cut, copy, v paste text Chn tt c text Danh mc menu cho cc tnh nng ca Amazing Text Editor. File Menu New Open Save Settings Edit Menu Undo Cut Copy Paste

118

About Exit

Select All

Bn c th thc hin menu trn s dng Menu Editor. Di y l bng phn cp menu cng cc thuc tnh Name, Caption, v access key, shortcut key cho tng menu object. Name MnuFile MnuFileNew MnuFileOpen MnuFileSave SepFileOne MnuFileSettings mnuFileSettingsBlackOnWhite mnuFileSettingsWhiteOnBlack MnuFileAbout SepFileTwo MnuFileExit MnuEdit MnuEditUndo SepEditThree MnuEditCut MnuEditCopy MnuEditPaste SepEditFour MnuEditSelectAll Caption &File &New &Open &Save - (du gch ngang) Se&ttings Black On White White On Black &About E&xit &Edit &Undo Cu&t &Copy &Paste Select &All Level 0 1 1 1 1 1 2 2 1 1 1 0 1 1 1 1 1 1 1 Shortcut None None None None None None None None None None Ctrl+X None Ctrl+Z None Ctrl+X Ctrl+C Ctrl+V None Ctrl+A

VI.1- Separator Line (dng ngn cch) trong Menu Ch : Khng th dng separator Line to mc 0 trong phn cp menu. Ch c th dng ti mc t 1 tr ln. Thm cc separator vo menu bng cch g mt du gch ngang (-) trong Caption ca Menu Editor. Lu , trong bng trn, cc separator c gi tr ca Caption l '-' v c tn i tng bt u vi tin t sep.

119

Hnh IV.15 - Menu vi cc ng phn cch VI.2- Thuc tnh Checked Thuc tnh Checked ca menu dng giao tip rng mt trng thi no ang tn to hoc rng mt tu chn no c la chn. Amazing Text Editor s dng Check mark trong h thng menu giao tip v la chn font, mu nn. Nu ngi dng chn Black on White menu item, mt Check mark s hin ra bn cnh la chn , mu ch s c t mu en, v mu nn s l mu trng. Bn c th t gi tr cho thuc tnh Checked khi thit k hoc khi chy. Bn cng c th t gi tr ca thuc tnh Checked t m chng trnh nh sau: MyMenuItem.Checked = True Ch : Thuc tnh Checked khng c tnh loi tr Di y l th tc cho s kin Click ca MenuFileSettingsBlackOnWhite_Click(). Private Sub menuFileSettingsBlackOnWhite_Click() `Set the color scheme for Black on White txtMain.BackColor = vbWhite txtMain.ForeColor = vbBlack `Set the menu Checks accordingly menuFileSettingsBlackOnWhite.Checked = True menuFileSettingsWhiteOnBlack.Checked = False End Sub
120

Chng V- X L LI TRONG NG DNG Ni dung


Bt cc bin khng khai bo bng Option Explicit Kim tra cc on m bng Breakpoint (im dng)
o o o

Gim st cc gi tr bin bng Watch Thn cc bin cn gim st Add Watch Kim tra tng dng lnh bng Step Into v Step Over Ngng ti cc dng chn trc bng Run to Cursor

To Error Handler I- Bt cc bin khng khai bo bng Option Explicit Khi chng ta vit chng trnh, Visual Basic IDE pht hin phn ln cc li c php phm phi (sai chnh t hoc t sai t kho). l cc li d tm d sa.

Hnh V.1 - Mt thng bo li Visual Basic IDE bt lnh If khng c t kho Then. Tuy nhin, n ch bt li thiu End If khi chng ta dch chng trnh. Nu khng mun VB ngng v hin thng bo li cho tng li, chng ta c th t ch VB ch nh du cc dng c li v cho php tip tc g. (chn Options t menu Tools menu v b chn Auto Syntax Check

121

Check box. VB vn s tm li khi chng ta mun chy chng trnh, n ch khng bt thng bo li mi ln chng ta gy li.) B chn Auto Syntax Check nu chng ta khng mun thy cc thng bo li c php khi ang vit chng trnh. Khi chy chng trnh t IDE, Visual Basic s bo cc li nh kiu d liu khng khp v cc on m khng hon chnh. Nu khng t ch Option Explicit, Visual Basic s cho chng trnh chy vi cc bin khng cn khai bo. Khi chng ta dng Option Explicit ti phn general ca Form hoc Module, mi bin trong chng trnh phi c khai bo c th bng mt trong cc t kho: Public, Private, Dim, hoc Static. Cc li nh my n gin c th dn ti cc li sai nghim trng nu chng ta khng s dng Option Explicit. Trong on m di y, c mt li nh my trn dng 6: bin intMyNum b g thnh intMyNim. Do khng khai bo Option Explicit, VB t ng to mt bin mi tn l intMyNim v gn cho n gi tr 0. Nu s dng Option Explicit, IDE s tm thy li nh my khi chy chng trnh.

Hnh V.2 - Tu chn yu cu khai bo bin tng minh V d: Mt li chng trnh (bug) to bi mt li nh my 01 Private Sub cmdUnWit_Click() 02 Dim intMyNum As Integer
122

03 04 intMyNum = 2 + 2 05 06 MsgBox CStr(intMyNim) 07 End Sub II- Kim tra cc on m bng Breakpoint (im dng) Breakpoint l mt ni trong m chng trnh m ti , chng ta ngng qu trnh chy ca chng trnh. C th t mt breakpoint theo mt trong cc cch sau:

Bm vo dng lnh m chng ta mun ngng chng trnh ti v bm F9. Bm vo Breakpoint icon trn Standard toolbar. Chn Toggle the breakpoint t Debug menu. Bm vo l ca ca s son tho chng trnh.

B cc breakpoint: chn Clear All Breakpoints t Debug menu. Hoc bm Ctrl+Shift+F9.

Hnh V.3 - t im dng Khng phi mi bug u do li c php; phn ln bug l do li logic ca m ngun hoc do thit k. Cc kiu bug ny kh tm. Chng ta s dng breakpoint thu hp vng nghi ng c bug. Sau khi xc nh c mt dng chy sai, chng ta dt mt breakpoint v tm cc vng gy li bng cch s dng watch.
123

III- Gim st cc gi tr bin bng Watch t mt watch gim st gi tr ca bin 1. t mt breakpoint ti dng hin message box. 2. Chy chng trnh 3. a con tr chut vo bin cn xem gi tr. con tr mt thi gian ngn. Mt ca s nh vi gi tr ca bin s hin ra. Khi theo di cc bin, chng ta c th thy s thay i v gi tr. Chng ta s thy, nh trong v d trn, on m c gn tr cho bin intMyNum v ln xut hin th hai b mt gi tr c gn. Bc tip theo so snh chnh t ca cc bin v dn ti li nh my v s sinh ra ca bin mi khng mong i. III.1- Gim st cc gi tr bin bng Add Watch Nu cn theo di nhiu hn mt bin, hy dng ca s Watch. Thm bin vo ca s Watches 1. t mt hoc hai breakpoint cho cc bin cn thm. Bm F5. 2. Ti mi breakpoint, nh du bin cn thm. 3. Bm nt phi chut v chn Add Watch t pop-up menu. 4. Nhp cc thng tin thch hp vo Add Watch dialog (xem hnh v) v bm OK. 5. hin th ca s Watch, chn Watch Window t View menu. Ca s ny cng s hin ra khi chng ta thm bin vo Watch.

Ca s Add Watch

124

Hnh V.4 - Ca s t v xem gi tr ca biu thc Trong khi ang break, chng ta cn ti phn m thuc phm vi ca cc bin ang c theo di. Watch window l mt cng c rt c ch theo di cc bin lin tc thay i gi tr, c bit trong cc vng lp hoc mng. III.2- Kim tra tng dng lnh bng Step Into v Step Over Chng ta c th ln bc tng dng lnh khi chy chng trnh. C 2 cch: step into (ln bc vo) v step over (ln bc qua). Vi step into, chng ta ln theo m ngun tng dng mt. Nu mt dng no gi mt procedure khc, chng ta s ln bc vo trong procedure .

125

Hnh V.5 - Minh ho chy tng bc Ln bc m bng cch bm F8 hoc chn Step Into t Debug menu. ln bc chng trnh, chng ta nn t mt breakpoint ti ni chng ta mun bt u u ln bc, sau chy chng trnh nh bnh thng. Khi n breakpoint, gi tnh nng step into bt u ln bc. Nu chng ta ln bc vo trong mt procedure v mun nhanh chng ra khi procedure , bm Ctrl+Shift+F8 hoc chn Step Out t Debug menu. Khi step over, chng ta cng c th ln theo tng dng lnh. Nhng khi gp mt dng lnh gi mt procedure, chng ta khng vo trong procedure c gi. Thay vo , chng ta chy procedure nh l mt dng lnh bnh thng.

Nu khng mun ln bc vo trong mt procedure, step over bng cch bm Shift+F8.


126

S d dng v nhanh chng hn nu chng ta dng Debug toolbar.

Debug toolbar c th l mt floating window, hoc chng tac c th ko n vo toolbar. III.3- Ngng ti cc dng chn trc bng Run to Cursor Mi ln chng ta t mt breakpoint, n s c tc dng cho n khi chng ta tr li m ngun v loi b n. Qu nhiu breakpoint s lm qu trnh debug chm v bun t. Thay v dng breakpoint, chng ta c th s dng Run to Cursor ngng chng trnh ti mt im tu . Nhn vo dng lnh m ti chng ta mun ngng chng trnh, bm Ctrl+F8 hoc chn Run to Cursor t Debug menu. Visual Basic IDE s chy chng trnh v ngng ti dng lnh va chn. IV- To trnh x l li X l li (Error Handling) l mt trong nhng rc ri ln nht khi lp trnh. Phn ny s hng dn chng ta cch to mt error handler n gin m c th m rng cho cc ng dng ca chng ta. Ci g xy ra nu khng x l li? Th lm mt v d nh sau: 1. M mt project mi. 2. a on m sau vo trong th tc Form_Load: Dim intTest as Integer intTest = 100 / 0 3. Chy chng trnh. Do li chia cho 0, VB ngng v sinh mt thng bo li. Nu chng trnh ca chng ta chy di dng file chy c (.exe), ngi dng cng s nhn c thng bo li v chng trnh s ngng ngay lp tc. y khng phi l phong cch lp trnh tt. VB cung cp mt s cch x l li khi chy. Cch n gin nht l s dng lnh On Error Resume Next. lm Visual Basic b qua li v chy tip. Cch ny c ch khi chng ta khng cn
127

gii quyt li sai. V d nu xy ra li khi chng ta ang thot khi chng trnh, chng ta c th khng cn x l li. th On Error Resume Next, thay on m trn trong Form_Load bng on m di y: Dim intTest As Integer On Error Resume Next intTest = 100 / 0 Msgbox "Program is past the error." Chng ta c mt error handler, ln ny, VB pht hin ra li v b qua dng lnh xy ra li. Trong trng hp ny, error handler cu chng trnh ca chng ta khi b v. Nhng nu khng x l li ny c th dn ti cc li khc tip theo trong chng trnh. Hn na, nhng on m dng n bin intTest c th s khng chy, kt qu; xy ra mt li trm trng hn, cn gi l li dy chuyn (cascading error.) trnh xy ra li dy chuyn, Visual Basic cung cp mt s tnh nng x l li khc, v d, kh nng to mt error handler c th hn. V d, chng ta mun ngi dng m li CD-ROM nhng khng mun mt li chia cho 0 xy ra. Hy thay on m trong Form_Load vi on sau y: 01 Private Sub Form_Load() 02 On Error GoTo EH 03 Dim intTest As Integer 04 Dim intRet As Integer 05 intTest = 5 / 0 06 Exit Sub 07 08 EH: 09 If Err.Number = 11 Then 10 11 13 14 MsgBox "Division by zero error occurred.", _ vbCritical End intRet = MsgBox("That drive is not ready.", _ vbExclamation + vbAbortRetryIgnore) Chn Case intRet
128

12 ElseIf Err.Number = 71 Then

15 16 17 18 19 20 21 22 `

Case vbRetry Resume Case vbAbort End Case vbIgnore Resume Next End Chn

23 ` Cc iu kin khc 24 ` 25 End If 26 End Sub Trc ht, lnh On Error s dng lnh GoTo (dng 2) bo VB phi n u nu xy ra li. Tron trng hp ny, chng ta mun n mt khi chng trnh c label (nhn) EH (dng 8). label ch c dng cho vic x l li v l mt t n v mt du hai chm sau, nh EH: trong on x l li trn. Phn x l li (dng 9-25) kim tra thuc tnh Number ca Err object. Gi tr ny cho ta bit xy ra li g. on ny kim tra xem c xy ra li division-by-zero hay khng, li ny hin nhin s xy ra. Khi xy ra li , lp trnh quyt nh rng li nghim trng ngng hn chng trnh. Lnh End (dng 18) s dng chng trnh. Li tip theo c kim tra l Drive Not Ready ( a cha sn sng), thng xy ra khi chng ta mun truy nhp mt CD-ROM hoc mm cha c a trong. Trng hp nym ngi dng c 3 la chn;

AbortNgng chng trnh ngay lp tc. RetryTh c a ln na. IgnoreB qua lnh v chy tip.

Sau li Drive Not Found, chng ta thng cn nhiu error-handling block khc x l cc loi li khc c th xy ra trong khi chng trnh hot ng. Chng ta c th dng Chn Case x l cc nhm li, do cc li c nh s, Vi d, mi li thuc loi Drive Not Ready nn c x l nh cch y: cho php ngi dng chn abort, retry, hoc ignore. Cc loi li khc nh division by zero v cc li nghim trng khc thng s lm cho chng trnh tht bi ngay lp tc hoc sau .
129

iu quan trng cn ghi nh; mi th tc cha cc on m c th gy li u cn c error handle. V- i tng li Err v to trnh x l li i tng li Err l i tng h thng, to sinh sn bi Visual Basic cha thng tin v li. Mi khi chng trnh chy pht sinh li, thng tin v li s c lu di dng thuc tnh ca Err. Cc thuc tnh c bn ca Err: Number: S hiu li (qui nh bi VB) va pht sinh. Nu bng 0: hin khng c li no khi chy chng trnh Description: M t li (bng ting Anh) V.1- Cch tm s hiu ca mt li V d: on th tc sau gip hin ra s hiu li (qui nh bi VB) v m t ca n bng ting Anh. 01 Private Sub Form_Load() 02 On Error goto Err_ Form_Load 03 04 06 08 Dim intTest As Integer intTest = 100 / 0 Exit sub Msgbox Err.Description & : & Err.Number

05 Cc cu lnh 07 Err_Form_Load: 09 End sub Khi Form np (load), th tc s c gi. Do chi cho 0 nn li xy ra. Do c x l li, nn chng trnh cng khng b treo. Tuy nhin, do khng c On Error Resume Next nn chng trnh cng khng b qua thc hin nhng lnh tip theo. Thay v , do ch th (dng 02) On Error goto Err_ Form_Load chng trnh s tm ti nhn Err_ Form_Load thc hin; l a ra thng bo m t li (ting Anh) cng s hiu ca n. V.2- Ch th by x l li Mi khi c pht sinh li pht sinh, chng trnh s thc hin tip tu theo ch th by nhy li. C 2 ch th by nhy li thng dng:
130

On Error Resume Next: Khi c pht sinh li pht sinh, b qua dng pht sinh li, thc hin tip ch th k sau. On Error Goto err_Label: Khi c pht sinh li pht sinh, chng trnh b qua cc dng ch th k sau, m nhy ti thc hin cc lnh bt u t nhn err_Label. Ch : Cc nhn (lable) trong VB c nh ngha bng mt dng vn bn, theo sau bi du [ : ]. Khng c c 2 nhn trng tn nhau trong mt hm/th tc. Ni chung, khng nn c 2 nhn trng tn trong phm vi mt Module m lnh. V.3- Khung th tc/hm c x l li Kt hp cc k thut trn, thng thng, ti thiu nht, mt hm/th tc cn c cu trc c thm x l li nh sau: Dng u ca th tc l ch th by nhy li ti nhn (Err_...) cha cc ch th x l li cui chng trnh Tip sau l cc lnh thng thng Lnh thot khi th tc/hm khi chng trnh chy bnh thng: Exit Sub/Function Nhn x l li (Err_...) Lnh Chn Case cha phn nhnh x l li cho mi li c th (da trn s hiu li). Dng lnh kt thc th tc/hm: End Sub/Function V d: 01 Private Sub Form_Load() 02 On Error goto Err_ Form_Load 03 Dim intTest As Integer 04 intTest = 100 / 0 05 Cc cu lnh 06 ... 07 Exit sub 08 Err_Form_Load: 09 Chn Case Err.Number 09 Case 11 Chia cho 0 10 Msgbox Sorry, divided by zero error 11 cc li khc c th xy ra c x l y 12 Case Else Li khng xc nh
131

13 14 End Chn 15 End sub VI- Bi tp Bi 1:

Msgbox Err.Description & : & Err.Number

- Tm hiu li chng trnh trong phn l thuyt x l li chia cho 0. Bi 2: Xem li chng trnh tnh ton:

Thm phn x l li nh sau: - Li do ngi dng nhp ch (ch khng phi nhp s) -> khng cng, tr, nhn, chia, lu tha c. - Li do chia cho khng.
-

Li do trn s (v d tnh lu tha 99999 9999).

- ... Bi 3: Xy dng chng trnh Text Editor c x l li:

132

- Thao tc (m, ghi, ...) vi file khng tn ti (do nhm ng dn, ...) - M file khng ng kiu (v d: m file a vo Text box, nhng file c chn li l mt nh ch khng l mt tp vn bn).

133

Chng VI- LU V LY D LIU T FILE Ni dung Ti sao phi lu d liu c nh S dng file lu d liu Thao tc vi file: Open, Input, LoadPicture, SavePicture Cc hm ca VB thao tc vi Windows Registry

I- Ti sao phi lu d liu c nh Chng trnh lu gi thng tin ti mi phin lm vic, khi chng trnh kt thc, mi d liu ca chng trnh lu trong cc bin trong b nh s mt. lu li thng tin mt cch c nh, chng trnh phi lu gi d liu v ly d liu t a cng. Chng ta c th lu v ly d liu t a bng nhiu cch: - S dng file kiu binary (nh phn) hay text (vn bn) - c v ghi vo Windows Registry - S dng c s d liu. Vi nhng chng trnh cn lu tr d liu khng phc tp, file thng c la chn lm phng tin ch yu lu v ly d liu. II- S dng file lu tr v ly d liu Hnh v di y m hnh ho qu trnh c bn trong vic s dng file lu v ly d liu.

134

Hnh VI.1 - Minh ho thao tc c/ghi file Chng ta thao tc vi file trn a qua file handle (th file). Hm FreeFile cho php ly c s file handle cn ri ca h iu hnh. Lnh Open c s dng gn mt file handle cho mt file cn c thao tc. Sau khi file gn vi mt file handle, chng ta c th ghi (bng Print hay Write), c tng dng (bng Line Input), ... III- M file vi lnh Open C php ca lnh Open: Open FilePath [For Mode] [Access AcessType [LockType] As [#]FileNumber [Len=CharInBuffer%] Trong :

Open : Tn lnh FilePath : ng dn chnh xc ca file.


135

For : t kho dng km ch mode (ch ). Mode : ch theo tc file, xem bng di.

Mode M t Append Thm d liu vo cui mt file. Nu file khng tn ti th to mi. Binary M file ch nh phn gm bit v byte. Nu file khng tn ti th to mi. Input M file c. Output M file ghi. Nu file khng tn ti th to mi. Random M file truy nhp ngu nhin. c s dng cho vic lu tr cc bn ghi n gin. Nu file khng tn ti th to mi.

Access : t kho dng km ch AccesType (kiu truy nhp). AccessType : Read (c), Write (ghi), Read Write (c v ghi). LockType : ch ra rng chng trnh khc c th c c file trong khi chng trnh ca chng ta ang lm vic vi file ny? Cc t kho cho php l Shared, Lock Read, Lock Write, v Lock Read Write.

As : t kho dng km ch file handle. # : biu tng dng ch rng s nguyn FileNumber l mt file handle. FileNumber : file handle (th file, thng c ly t h iu hnh bi hm FreeFile trc ). Len: t kho dng km ch di bn ghi. CharInBuffer% : di bn ghi dng trong file c m theo truy nhp random access.

(Cc cm t trong ng m ngoc vung [ .. ] l tu chn) V d: M file cho c d liu ra `Get a free file handle and assign it to `the file handle variable FileHandle% = FreeFile `Open a file for writing Open strFileName For Output As #FileHandle% V d: Th tc sau gip lu d liu vo mt file. N c th c s dng thc hin chc nng Save trong chng trnh son tho n gin trong bui trc. Th tc dng lnh Open m file (dng 28) v lu ni dung mt textbox (txtMain) vo file vi phng thc Print (dng 34). Trong khi
136

thc hin ghi vo file, hnh con chut c i thnh dng ng h nc. Sau khi ghi xong, file s c ng vi lnh Close (dng 40). Lnh Close s dng file handle l tham s. 01 Private Sub SaveToFile () 02 Dim strFileName As String `Tn file cn m 03 Dim strText As String Ni dung file 04 05 Dim strBuffer As String Chui cha buffer 06 Dim FileHandle% Bin thao tc con tr file 07 08 ... Ta c th s dng hp thoi Inputbox nhc ngi s dng a vo mt tn tp v ng dn y ca n. strFileName= Inputbox(...) 17 ... 18 strFileName = C:\Temp\file.txt 19 20 Gn gi tr cho bin text 21 strText = txtMain.Text 22 23 Ly mt file handle cn ri v gn n cho bin FileHandle 24 25 FileHandle% = FreeFile 26 27 M file ghi 28 Open strFileName For Output As #FileHandle% 29 30 t con tr l ng h ct phng ghi file tn nhiu thi gian 31 MousePointer = vbHourglass 32 33 Ghi file 34 Print #FileHandle%, strText 35
137

36 a con tr v hnh dnh mc nh ca Windows 37 MousePointer = vbDefault 38 39 `Close the file when completed 40 Close #FileHandle% 41 End If 42 43 End Sub ng file sau khi thao tc Vic ng file (bng lnh Close) sau khi thao tc (c, ghi, ...) l rt quan trng. N gip gii phng file handle, cng nh m bo ghi ton b d liu t b nh m ln a cng. Trong v d trc, ti dng lnh s 40, file c ng sau khi ghi xong. IV- Ly d liu t file vi lnh Input Chng ta ly d liu t a tng t nh ghi chng vo a. Tuy nhin, chng ta s dng mode (ch ) Input, ch khng phi Append, Output, Binary, ng thi, chng ta s dng lnh Line Input c tng dng d liu, ch khng phi nhng lnh ghi d liu l Print hay Write C php Line Input: Line Input #FileHandle, strBuffer Trong :

Line Input : T kho, ch thao tc l c ly d liu. # : biu tng ch tip sau l mt file handle. FileHandle : th hp l ca file ang m. strBuffer : vng m cha d liu c c t file vo.

Nhng tp vn bn n gin gm nhng dng k t phn cch bi Chr(13) & Chr(10) (carriage return (v u dng) v Line feed (xung dng)). Hai k ny c chn vo khi chng ta nhn Enter trong chng trnh son tho (v d Notepad). VB c hng s i din cho chui 2 k t l: vbCrLf. Lnh Line Input s c mt file cho ti cui mi dng (gp t hp k t xung dng - vbCrLf). Lnh ny loi b vbCrLf, ri tr chui c c v vng m.

138

duyt ton b file, s dng vng lp Do While. Hm EOF() c s dng kim tra xem cui mi file hay cha; hm ny s dng mt file handle lm tham s. V d: Th tc sau gip c d liu t mt file. N c th c s dng thc hin chc nng Open trong chng trnh son tho n gin trong bui trc. Ni dng file vn bn c c s c lu v hin th trong mt textbox (txtMain) 01 Private Sub SaveToFile () 02 Dim strFileName As String `Tn file cn m 03 Dim strText As String Ni dung file 04 05 Dim strBuffer As String Chui cha buffer 06 Dim FileHandle% Bin thao tc con tr file 07 08 ... Ta c th s dng hp thoi Inputbox nhc ngi s dng a vo mt tn tp v ng dn y ca n. strFileName= Inputbox(...) 17 ... 18 strFileName = C:\Temp\file.txt 19 20 21 Ly mt file handle cn ri v gn n cho bin FileHandle 22 23 FileHandle% = FreeFile 24 25 M file 26 Open strFileName For Input As #FileHandle% 27 28 t con tr l ng h ct 29 MousePointer = vbHourglass 30 31 Duyt cc dng ca file

139

32 Do While Not EOF(FileHandle%) `Check for end of file 33 34 c mt dng t file 35 Line Input #FileHandle%, strBuffer. 36 37 Thm vo dng t buffer 38 strText = strText & strBuffer & vbCrLf 39 Loop 40 41 Thay i hnh dng con tr chut v dng mi tn 42 MousePointer = vbDefault 43 44 ng file 45 Close #FileHandle% 46 47 Gn text ly c cho textbox 48 txtMain.Text = strText 49 50 t tn file vo thuc tnh Caption ca Form 51 frmMain.Caption = "Text Editor- [" & strFileName & "]" 52 End If 53 End Sub V- c / Ghi file nh Cng nh lu v ly text t mt file, bn cng c th lu v ly nh. Hm LoadPicture np nh tp bitmap hay icon t a v gn cho thuc tnh Picture ca mt Control loi PictureBox hay Image. C php LoadPicture(): ImageCtrl.Picture = LoadPicture(FilePath) Trong :

ImageCtrl : tn ca mt Control PictureBox hay Image, hay mt Form. Picture :Thuc tnh nh ca i tng. LoadPicture : Tn hm. FilePath : c dn y ti v tr tp nh.
140

Chng ta c th s dng hm SavePicture lu tr nh c gn cho mt Control PictureBox, Image, hay mt Form. C php SavePicture(): SavePicture Picture, strFilePath Trong :

SavePicture: Tn hm. Picture : nh c gn hay nhng trong thuc tnh Picture ca mt Control PictureBox, Image, hay mt Form. StrFilePath : c dn y ti v tr tp mun lu nh vo.

V d: Lu mt nh gn trong thuc tnh Picture ca mt Control Image xung mt file. 01 Private Sub cmdImgSave_Click() 02 03 Dim strFileName As String `Bin cha tn file 04 ... Ta c th s dng hp thoi Inputbox nhc ngi s dng a vo mt tn tp v ng dn y ca n. strFileName= Inputbox(...) 17 ... 18 strFileName = C:\Temp\img.bmp 18 19 Ghi nh trong Image Control 20 SavePicture imgMain.Picture, strFileName 21 22 Thng bo ghi file cho ngi s dng 23 MsgBox strFileName & " saved." 24 End If 25 End Sub VI- Lu v ly d liu vi cc hm ca VB vi Registry Chng ta c th s dng Windows Registry lu tr nhng mu nh thng tin cho chng trnh. Nhng thng tin c th l v tr, kch c ca
141

mt Form chng trnh hay tu chn ngi dng. Mt s lp trnh vin s dng Registry lu tr danh sch nhng file c s dng sau cng. Chng ta s thy rng s dng Registry l mt cch nhanh chng, n gin lu tr thng tin c nh. Cc hm trong VB gip thao tc vi Windows Registry: DeleteSetting, GetSetting, GetAllSettings, v SaveSetting. Nhng hm bn trong ny c mt hn ch quan trng:VB c th ly v ghi d liu vo ch mt kho no trong MyComputer\HKEY_CURRENT\USER\Software\VB and VBA Program Settings. Qua trnh ny c t ng ho bi VB; v VB khng th c hay ghi vo nhng kho khc trong Registry m khng c s gip ca cc hm Win32 API.

Hnh VI.1 - Registry Editor VI.1- Ly gi tr vi hm GetSetting() Hm GetSetting() cho php ly gi tr t mt phn trong VB ca Windows Registry: C php MyString = GetSetting(VBKeyName, Section, Key[, Default]) Trong :

MyString : tn ca chui tr v bi GetSetting(). GetSetting : tn hm. VBKeyName : chui ch tn ca kho trong vng VB/VBA ca Registry. Section : chui ch phn (section) hay kho con subkey.
142

Key : chui ch tn ca mt mc vo trong mt phn. Mt phn (section) c th cha nhiu kho (key). Default : Gi tr tr v trong trng hp hm GetSettings() gp li. V d: Return$ = GetSetting(App.Title, "FormInit", "Left", DefaultLeft$)

VI.2- Lu gi tr vo Registry vi lnh SaveSetting Nu bn mun lu gi mt gi tr vo kho MyComputer\HKEY_CURRENT\USER\Software\VB and VBA Program Settings trong Registry, chng ta c th s dng lnh SaveSetting: SaveSetting VBKeyName, Section, Key, Setting Trong :

SaveSetting : tn lnh VBKeyName : chui ch tn ca kho trong vng VB/VBA ca Registry. Section : chui ch phn (section) hay kho con subkey. Key : chui ch tn ca mt mc vo trong mt phn. Mt phn (section) c th cha nhiu kho (key). Setting : chui m chng ta mun t gi tr cho kho. V d: SaveSetting App.Title, "FormInit", "Left", "975"

VI.3- Ly mng gi tr Register vi GetAllSettings() Chng ta c th ly danh sch gi tr cc key vo mt mng bng hm GetAllSettings() MyVariant = GetAllSettings(VBKeyName, Section)

143

VI.4- Xo mt kho vi lnh DeleteSetting Lnh DeleteSetting gip xo mt kho trong Registry. DeleteSetting VBKeyName, Section[, Key] V d: DeleteSetting App.Title, "FormInit VII- Bi tp Bi 1: - Xy dng li chng trnh Amazing Text Editor trong ci t chc nng New, Open, Save. - Th tm hiu cho php trong h thng Menu c chc nng cho php m li File c son tho ln cui cng trc . Bi 2: - Xy dng chc nng lu li vn c nh d, np li vn c lu cho chng trnh c Caro. Gi : - Nn lu vn c vo Text file, mi hng l mt dng trong File. Nc cha i l [ . ], nc ngi u i l [ X ], nc ngi sau i l [ O ]. - V d: Vn c: X O

X c lu thnh mt File dng text: . . . xo . . . x

144

Chng VII- XY DNG HELP CHO NG DNG Ni dung Cc loi Help Phn phi Help vi ng dng S dng Help Work Shop I- B sung h tr Help Visual Basic h tr 2 h thng Help khc nhau: h thng Windows Help (WinHelp) truyn thng, v HTML Help mi hn. a WinHelp hoc HTML Help vo ng dng, chng ta t thuc tnh HelpFile (v vit, dch mt Tp help) hin th Help khi ngi dng nhn phm F1 hoc yu cu Help t menu. C th t thuc tnh HelpContextID cung cp mt ch Help tu ng cnh cho mt phn t bt k trong giao din ngi dng ca ng dng. Quy trnh ny, v c bn, ging nhau i vi c WinHelp v HTML Help. I.1- Thuc tnh HelpFile Thuc tnh HelpFile ca i tng App (i tng gip qun l chng trnh), dng ch r tn file Help ca ng dng. N i hi mt file WinHelp (.hlp) hp l hoc mt file HTML Help (.chm). S xy ra li nu file khng tn ti. t thuc tnh HelpFile:
1. Chn Project Properties t Project menu m Project Properties. 2. Ti trng Help File Name ca General tab, nhp tn, ng dn v tn

file ca Tp help (.hlp or .chm) ca ng dng. Ta cng c th gn tr cho thuc tnh bng chng trnh. on m di y chn ra mt HTML Help file nm trong cng th mc vi file executable ca ng dng: Private Sub Form_Load() App.HelpFile = App.Path & "\foo.chm" End Sub i tng Err cng c mt thuc tnh HelpFile, cho php ta ch ra mt Tp help khc cho cc thng bo li.V d, nu c mt s ng dng c chung

145

thng ip bo li, ta c th t Help cho thng bo li trong mt Tp help c th c gi bi thuc tnh Err.Helpfile trong tng ng dng. I.2- Thuc tnh HelpContextID Thuc tnh HelpContextID c dng gn mt thnh phn giao din ngi dng (nh Control, Form, hay menu) vi mt topic (ch ) c lin quan trong mt Tp help. Thuc tnh HelpContextID phi l mt gi tr kiu Long khp vi Topic ID ca mt ch trong mt file WinHelp (.hlp) hoc HTML Help (.chm). Ta khng phi nhp HelpContextID cho mi Control trn mt Form. Nu ngi dng bm F1 trn mt Control c HelpContextID bng 0 (mc nh), Visual Basic s tm mt HelpContextID hp l ca container ca Control . Gn tr cho HelpContextID ca mt Control hoc Form Xem hng dn c th trong phn S dng Help WorkShop Ch : i vi CommonDialog Control v c th mt s Control khc, tn ca thuc tnh ny l HelpContext ch khng phi l HelpContextID. Gn tr cho HelpContextID ca mt menu 1. Chn Menu Editor t Tools menu. 2. Chn menu item ta mun nhp HelpContextID. 3. Nhp mt s hp l kiu Long vo Chn the HelpContextID box. Ghi li gi tr va nhp s dng gi tr cho Topic ID ca Help topic tng ng. Cng c th gn tr cho HelpContextID bng chng trnh nh sau: Private Sub Form_Load() Command1.HelpContextID = 12345 MenuHelp.HelpContextID = 23456 Err.HelpContext = 34567 End Sub II- B sung h tr What's This Help What's This Help cho php truy cp nhanh ti phn Help trong mt popup window m khng cn m mt Help viewer (chng trnh gip tra cu, c tr gip). N thng c dng cung cp cc tr gip n gin cho cc phn t giao din ngi dng, chng hn cc data entry field (trng nhp d liu). Visual Basic h tr What's This Help topic trong c WinHelp (.hlp) v HTML Help (.chm).
146

t thuc tnh WhatsThisHelp ca mt Form bng True cho php dng What's This Help. Khi What's This Help dc dng, context-sensitive Help cho Form b v hiu. t What's This Help cho mt Form
1. Chn Form, bm p vo thuc tnh WhatsThisHelp trong Properties

window t gi tr True. 2. t cc thuc tnh sau cho mt What's This button ti title bar ca Form: Thuc tnh Gi tr BorderStyle 1 - Fixed Single or 2 -Sizable MaxButton False MinButton False WhatsThisButton True 3. Ch : Mt Form khng th c What's This Help button nu n c Minimize v Maximize button. 4. Chn tng Control ta mun c What's This Help v gn mt gi tr phn bit cho thuc tnh WhatsThisHelpID ca Control . Ghi li gi tr va nhp s dng gi tr cho topic ID ca Help topic tng ng. Ch : ci What's This Help bng HTML Help, mi topic ca What's This Help phi c cha trong mt file Cshelp.txt c dch thnh .chm file. Ta cng c th c What's This Help m khng cn dng What's This Help button bng cch t thuc tnh WhatsThisHelp ca Form bng True v gi phng thc WhatsThisMode Method ca mt Form hoc phng thc ShowWhatsThis ca mt Control. III- Phn phi Help vi ng dng Bc cui cng: m bo Help s n tay ngi dng. Cc yu cu ca vic phn phi Help vi ng dng l khc nhau gia WinHelp v HTML Help. III.1- Phn phi WinHelp Mi h thng Windows c ci sn Windows Help Viewer (chng trnh c Help), ci duy nht ta cn phn pht l Tp help (.hlp). Package and Deployment Wizard s t ng b sung cc tham chiu ti Tp help t ng dng ca ta. Nu to b ci t bng cc cng c khc, ta cn m bo rng

147

file .hlp c km theo v ci vo ni thch hp (thng cng th mc ca ng dng hoc trong th mc \Windows\Help.) III.2- Phn phi HTML Help Khng phi mi ngi dng u c cc file cn thit c HTML Help. Package and Deployment Wizard s b sung cc tham chiu Help t ng dng nhng khng ht. Ta s phi t b sung. Cn tham kho ti liu cng c to HTML Help c thm thng tin. IV- S dng Help Workshop Microsoft Help Workshop 4.0 l mt b cng c ring, khng nm trong Visual Basic, dng to tp help cho ng dng chy trong cc h thng Windows 32-bit. Help Workshop c trong CD-ROM cha b ci Visual Basic 6.0, trong th mc \Tools\Hcw. Ta chy Setup.exe ci t Help Workshop vo my ca mnh. Cc cng c trong Help Workshop cho php to mt tp cc tp help cho ng dng ca ta. Thng thng, cc tp help chng ta to cho ti liu onLine help (tr gip trc tuyn) ca ng dng gm mt contents file (file ni dung) (.cnt--xem hnh) v cc tp help (.hlp--xem hnh) c lin quan.

Hnh VII.1 - Help workshop Content file (.cnt) lit k cc topic trong ti liu help trong mt cy phn cp.
148

Mt tp help (.hlp) cha nhiu topic di dng text v hypertext (siu vn bn). Content file tng t nh mt bng mc lc cho ton b ti liu help. Ngi dng nhn vo mt tn topic trong trang Contents tm mt topic c th cha trong mt tp help. Ta to d liu help bng cch s dng trnh son tho bt k h tr footnote v Rich Text Format (.rtf). Sau , ta "bin dch" cc file RTF v help project file (.hpj) bng Help compiler to tp help. Bng di y lit k cc file d liu v file chy c s dng trong qu trnh ny. Ta to contents file bn trong mi trng Help Workshop (xem hnh di). Cc thnh phn ca Help Workshop File Hcw.exe Tn Help Workshop M t

Chng trnh chnh (workspace)to ti liu trc tuyn Hcrtf.exe Help Compiler Chuyn file .rtf thnh file .hlp Shed.exe Hotspot Editor To lin kt siu vn bn trn nh bitmap Dialog Box To context-sensitive help dialog (tr gip Dbhe.exe Help Editor ph thuc ng cnh) Hcw.hlp Tp help ca Help Workshop Shed.hlp Tp help ca Hotspot Editor Dbhe.hlp Tp help ca Dialog Box Help Editor MyProject.hpj Help project file D liu v Project to bi Help Workshop Rich text Format *.rtf RTF file m s b chuyn thnh mt file .hlp files MyProject.hlp Tp help Tp help to t .rtf MyProject.cnt Contents file Contents file ca tr gip tr tuyn ang to MyProject.log Log file File lit k cc li bin dch Cc thnh phn ca Help Workshop

149

Hnh VII.2 - Minh ho Help workshop t cy phn cp topic ca mt content file trong mi trng Help Workshop. Ta c th c help documentation (ti liu tr gip) ch n cc tp help khc nhau t mt content file. Cu hnh ny c ch nu ta c mt chng trnh ln vi cc topic c phn thnh nhiu loi. Chia thnh cc tp help nh s tin cho nhng ngi lm ti liu v tp help nh cng gim thi gian ti khi chy. IV.1- To Tp help Ta c th to mt tp help t mt ngn ng footnote markup trong nh dng Rich Text Format. RTF file c xy dng theo ba phn: jump text, topic text, v cc footnote tag S dng cc footnote tag nh cu trc lin kt siu vn bn ca mt tp help. Phn quan trng ca cu trc ti liu help chnh l topic (ch ) mt section (mc) ca Rich Text ngn cch bi mt ln phn trang. Dng u tin ca section ny c t footnote bng k t footnote t bit #. Ta nhp topic ID ca topic section bn cnh k t ny trong phn footnote ca file RTF. (mt topic ID l a ch nh v ca topic trong file RTF.) Ta cng c th s dng cc k t $ v k lm k t footnote ti u mi topic section. K t $ i din cho mt th subject. K t k dng nh du cc index keyword s hin ra khi ta xem trang Index trong Help Topics dialog, xem hnh di. Cc t nhp vo phn subject footnote s hin trong ca s History ca ti liu help .
150

Hnh VI.4 - Mt ti liu help c nhiu ca s . Cc phn text c nh dng kiu strikethrough (gch ngang qua) s l hypertext. Ngay tip sau hypertext l phn jump-to address (ni c ch n t on strikethrough text) c nh dng kiu hidden (n). Ni dung ca jump-to address chnh l Topic ID. Khi ta dch RTF file bng Help
151

Workshop's Help Compiler, phn strikethrough text s c chuyn thnh hypertext. Khi ngi dng bm vo hypertext, topic c Topic ID c ghi trong on hidden text s c np. IV.2- To mt RTF tp help n gin 1. M mt New document t File menu trong Microsoft Word. 2. Nhp vo cc dng sau: Moe Larry Curly 3. G mt dng trng vo sau dng cui. 4. To mt page break (phn trang) bng cch chn Break t Insert menu, chn Page Break 5. Nhp tng dng text sau, chn mt page break vo sau mi dng: Moe is a bossy stooge. Larry has funny hair. Curly is roly-poly. 6. Quay li ba dng u tin. G IDH_MOE vo sau t Moe. Ch khng du cch, g vo ngay st t Moe. 7. nh du Moe v chn Strikethrough trong Font dialog (chn Font t Format menu). Ch khng chn nh dng Hidden. 8. nh du IDH_MOE. nh dng kiu Hidden (tng t nh trn). Lp li vi IDH_LARRY cho dng tip theo. 9. nh dng Larry kiu Strikethrough. Ch khng nh dng Hidden cho t ny. 10. G IDH_CURLY vo sau Curly trn dng th 3. 11. nh dng Curly kiu Strikethrough. nh dng IDH_CURLY kiu Hidden. 12. t con tr son tho ti u dng Moe is a bossy stooge. Chn Footnote t Insert menu. 13. Trong Footnote and Endnote dialog (xem hnh), chn Custom Mark v nhp # vo Text box. Bm OK. Mc footnote ca ti liu Word document hin ra.

152

Hnh VII.5 - Hp thoi Footnote and Endnote S dng k t # trong footnote ca ti liu RTF ghi Topic ID cho mt topic. 14. G IDH_MOE vo sau k t # trong phn footnote. 15. t con tr son tho vo u dng Larry has funny hair Line. Nhp mt footnote nh hng dn trong cc bc 12 v 13. 16. G IDH_LARRY vo sau k t # va nhp vo footnote. 17. t con tr son tho vo u dng Curly is roly-poly Line. Nhp mt footnote nh hng dn trong cc bc 12 v 13. 18. G IDH_CURLY vo sau k t # va nhp vo footnote. 19. Lu ti liu di dng RTF file, tn l stooges.rtf (chn Rich Text Format trong danh sch Save as Type ca Save As dialog). IV.3- Bin dch mt RTF file thnh mt file .hlp 1. Chy Help Workshop 2. Chn New t File menu. 3. Trong New dialog, chn mt help project mi. Lu project vi tn stooges.hpj. 4. Nhn vo File bn phi Workshop gi Topic File dialog. Nhn vo Add hin Open File dialog. 5. Chn stooges.rtf v bm OK thm file vo Help Workshop

153

Hnh VII.6 - Xc nh file RTF IV.4- Bin dch mt RTF file thnh mt HLP file. 6. dch .RTF file thnh .HLP file, bm vo nt Save and Compile. 7. Chn Run WinHelp t File menu. 8. Trong View help file dialog, chn View Help xem tp help c dch, stooges.hlp. Ta cng c th vo th mc ca project trong Windows Explorer v double-bm stooges.hlp xem file. V- Gn cc Tp help vo ng dng V.1- Lin kt tp help khi thit k 1. M project cn gn tp help. 2. Chn Tn_Project Properties t cui Project menu. 3. Nhn vo nt ... bn phi Tp help Name Text box. 4. T Tp help dialog, tm tp help stooges.hlp va to. 5. Nhn vo Open trong Tp help dialog ly tn file vo Project Properties dialog. 6. Nhn OK ti Project Properties dialog. V.2- Lin kt tp help khi chy S dng thuc tnh HelpFile ca i tng App: Private Sub Form_Load() App.HelpFile = "stooges.hlp"
154

End Sub Khi lin kt tp help bng Project Properties dialog, nu t tp help vo cng th mc vi ng dng, ta c th b tn a v th mc trong ng dn. Vic ny s loi c li ng dn c th xy ra khi chy. Sau khi lin kt mt tp help vi mt ng dng, nu bm F1 khi ng dng ang c Focus, tp help s hin ra. VI- To Context-Sensitive Help Vi context-sensitive help (tr gip theo ng cnh), ng dng ca ta c th gi mt topic c th trong mt tp help tu theo ni ta gi help. Ta lm cho ti liu help ca ng dng tr thnh context-sensitive bng cch gn gi tr bng s ca topic ID cho thuc tnh HelpContextID ca mt Control hoc object cho trc. Nh ni trn, topic ID l mt xu k t ch nh v tr ca mt topic no bn trong cu trc ca mt tp help. Topic ID thng tun theo quy c t tn bt u bng IDH_, l vit tt ca "identification for tp help" (nh danh ca tp help). Sau khi tp help c gn cc topic ID, ta gn mt gi tr bng s cho mi xu topic ID. Ta gn gi gi tr cho topic ID trong Map dialog ca Help Workshop (xem hnh). Sau khi mi topic ID c gn mt s phn bit, ta bin dch help project. S c gn cho topic ID s l gi tr ta s gn cho thuc tnh HelpContextID trong ng dng Visual Basic.

Hnh VII.7 - To help theo ng cnh


155

Ta gi Map dialog bng cch chn nt Map trong Help Workshop. Hnh di y minh ho vic gn tr cho thuc tnh HelpContextID. Project c 5 OptionButton. Thuc tnh HelpContextID ca mi OptionButton c gn mt gi tr ring tng ng vi topic ID c lin quan trong file Composer.hlp (xem hnh trn). Khi ngi dng chn mt trong cc OptionButton v bm F1, file Composer.hlp s t ng m topic c lin quan n OptionButton .

Kt qu:

Hnh VII.8 - Minh ho Help theo ng cnh Khi ngi dng chn OptionButton v bm F1, topic tng ng s hin ra trong ca s help Ngoi vic s dng HelpContextID lm cho ng dng p ng tu theo ng cnh khi bm F1, ta cn c th to cc message box hin contextsensitive Help. on chng trnh di y minh ho cch li dng hai tham
156

s cui ca hm MsgBox(), HelpFile v HelpContextID, hai tham s ny gn mt tp help v topic vi message box. Ti dng 20 tham s HelpFile c gn gi tr ca thuc tnh HelpFile ca i tng App. Ti dng 21, thuc tnh HelpContextID ca OptionButton c gn cho tham s HelpContextID ca hm MsgBox(). Kt qu: khi ngi dng bm vo nt Help, topic tng ng vi OptionButton c chn s c hin th (xem hnh di). V d: Gn Context-Sensitive Help vi mt Message Box 01 Private Sub cmdAdd_Click() 02 Dim i% 03 Dim Result% 04 Dim Msg$ 05 `To mt message cho Message Box 06 Msg$ = "Strike the Help Button for more help" 07 08 `Duyt mi OptionButtons trong array 09 ` tm nt c chn (Count l mt thuc tnh 10 `ca Control array cho bit s phn t 11 `cha trong Control array) 12 For i% = 0 To optComposer.Count - 1 13 If optComposer(i).Value = True Then 14 lblComposer.Caption = optComposer(i%).Caption 15 16 `Hin mt Message Box vi nt Help. Also 17 `Gn mt Tp help v Help topic cho 18 `Message Box 19 Result% = MsgBox(Msg$, vbMsgBoxHelpButton, _ "Help Demo", App.HelpFile, _ optComposer(i).HelpContextID) 20 End If 21 Next i% 22 End Sub

157

Hnh VII.9 - Minh ho Help theo ng cnh S dng message box gn vi help topic theo cch trn rt c ch trong vic thng bo li cho ngi dng hay yu cu ngi dng a ra mt quyt nh. Mt thng bo li cn chuyn ti ba thng tin: xy ra li g, ci g gy ra li, v ngi dng c th lm g sa li. Bng cch gn mt tp help v HelpContextID vi mt message box, ta c th cung cp c nhiu thng tin cho ngi dng khi h cn a ra quyt nh hay khi h cn hiu v li va xy ra Vic tr gip khng bao gi l qu nhiu. Chng trnh tt nn c h thng help tt, d dng, d hiu. VII- Bi tp To tp help theo tng bc nh trnh by trong ti liu. Gn tp help vo chng trnh Text Editor hay c Caro.

158

BNG CC T VIT TT Inheritance: Tha k Polymorphism: a dng Object Oriented Design methodology OOD: Phng php thit k hng i tng Graphics user interfacegiao- GUI: Giao din ngi dng ho Commands: Cu lnh Functions: Hm Keywords: T kha Application programs: Cc chng trnh ng dng Integrated Development Environment IDE: Mi trng pht trin tch hp Auto Code Completion: T hon thin m Properties: c tnh-thuc tnh Methods: Phng thc Events: S kin Cascading error: Li dy chuyn

159

TI LIU THAM KHO 1. 2. 3. Nguyn Ngc Bnh Phng, Nguyn Quang Nam, Th thut lp trnh Visual Basic 6, NXB Giao thng vn ti. VB & VBA in a Nutshell: The Language - Paul Lomax. Visual Basic 6 Complete - Steve Brown.

160

You might also like