Thủ thuật visual basic

Dùng VB6 là cách nhanh và tốt nhất để lập trình cho Microsoft Windows. Cho dù bạn là chuyên nghiệp hay mới mẻ đối với chương trình Windows, VB6 sẽ cung cấp cho bạn một bộ công cụ hoàn chỉnh để đơn giản hóa việc triển khai lập trình ứng dụng cho MSWindows. Visual Basic là gì? Phần "Visual" đề cập đến phương phàp được sử dụng để tạo giao diện đồ họa người dùng (Graphical User Interface hay viết tắc là GUI) . Có sẵn những bộ phận hình ảnh, gọi là controls, bạn tha hồ sắp đặt vị trí và quyết định các đặc tính của chúng trên một khung màn hình, gọi là form. Nếu bạn đã từng sử dụng chương trình vẽ chẳng hạn như Paint, bạn đã có sẵn các kỹ năng cần thiết để tạo một GUI cho VB6. Phần "Basic" đề cập đến ngôn ngữ BASIC (Beginners All-Purpose Symbolic Instruction Code), một ngôn ngữ lập trình đơn giản, dễ học, được chế ra cho các khoa học gia (những người không có thì giờ để học lập trình điện toán) dùng

pdf22 trang | Chia sẻ: tlsuongmuoi | Lượt xem: 2168 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Thủ thuật visual basic, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MUÅC LUÅC Laâm cho Form luön luön hiïån ra möåt chöî vaâ cuâng möåt cúä................................... 2 Duâng Event naâo àïí update Form?........................................................................ 3 Laâm sao ta biïët möåt Form àaä àûúåc Loaded? ...................................................... 3 Laâm möåt Form giöëng möåt Form coá sùén ................................................................ 4 Laâm cho Controls biïën mêët................................................................................... 5 Choån nhiïìu Controls nhû möåt nhoám .................................................................... 5 Choån nhiïìu haâng trong ListBox ........................................................................... 5 'Sort' caác haâng trong möåt Listbox ......................................................................... 6 Sùæp ngay cöåt nhûäng chûä trong caác haâng khaác nhau cuãa Listbox. ....................... 6 Drag möåt haâng tûâ Listbox nêìy boã vaâo Listbox khaác ............................................ 6 Laâm sao biïët Drag Source laâ control naâo ............................................................. 7 In nhûäng haâng àûúåc choån cuãa möåt ListBox.......................................................... 8 Bùæt buöåc user phaãi click ComboBox àïí choån möåt haâng ....................................... 8 Laâm möåt Control hiïån ra trïn moåi trang cuãa Tab Control.................................. 8 Sùæp xïëp thûá tûå caác TextBox cho Data Entry ........................................................ 9 Laâm sao cho data vaâo trong ListBox hay ComboBox.......................................... 9 Sao khöng thêëy hònh trong CommandButton? .................................................. 10 Laâm sao àùåt icon lïn Toolbar laâm shortcut cho möåt menu command cuãa VBIDE? ................................................................................................................ 10 Caác daång cuãa Ngaây vaâ Thò giúâ ............................................................................ 10 Laâm sao àoåc tûâ möåt Text file............................................................................... 14 Laâm sao chûáa vaâo möåt Text file .......................................................................... 14 Caách thûác Log möåt dûä kiïån vaâo möåt Text file ?.................................................. 15 Caách thûác àoåc/viïët value cuãa möåt Variable tûâ möåt "ini" file ? ........................... 17 Àöíi Enter key ra Tab key.................................................................................... 18 Àöíi daång MousePointer ra àöìng höì caát .............................................................. 19 Kiïëm Help cho caác Functions.............................................................................. 19 Duâng Docket Dot Matrix Printer........................................................................ 20 Cho Application möåt Icon.................................................................................... 21 VB shorcut Keys .................................................................................................. 21 Laâm hiïån ra möåt Form khaác Giaã sûã baån àang úã trong Form1 vaâ muöën laâm cho Form2 hiïån ra, haäy sûã duång: Form2.Show Khi muöën dêëu Form2, duâng: Form2.Hide Khi möåt Form àûúåc 'Show' lêìn àêìu tiïn, noá àûúåc 'Load' (cho thaânh hònh) vaâ 'Show' ngay sau àoá. Khi möåt Form àaä coá röìi, tûác laâ àaä àûúåc 'Load' röìi, luác baån 'Hide' noá cq•ng giöëng nhû keáo möåt têëm maân che noá laåi. Kïë àoá, khi baån 'Show' noá cq•ng giöëng nhû múã maân ra, khöng coá gò aãnh hûúãng Form. Baån coá thïí cho Form biïën mêët bùçng caách 'Unload' noá, nhû: Unload Form2 Lêìn túái khi baån 'Show' noá, Form seä àûúåc 'Load' trúã laåi. Möîi khi Form àûúåc 'Load', noá 'execute' sub Form_Load. Form_Load laâ núi baån viïët caác 'statements' àïí 'initialise' Form, tûác laâ nhûäng gò cêìn phaãi àûúåc sùæp xïëp cho sùén saâng trûúác khi Form thaânh hònh. Do àoá baån phaãi quyïët àõnh khi naâo duâng Unload hay Hide àï? Laâm cho Form biïën mêët. Nhúá rùçng möîi khi Form àûúåc 'Load' thò noá 'initialise' vaâ mêët möåt ñt thò giúâ. Nïëu baån muöën laâm cho möåt Form hiïån ra vaâ khiïën noá daânh nhêån têët caã 'keystrokes' vaâ 'mouse clicks' thò duâng: Form2.Show vbModal Ngay sau khi Form2 àûúåc 'Show' dûúái daång vbModal, noá daânh ngay CPU process, àïën àöíi statement nùçm ngay dûúái àoá trong Form1 cq•ng àúåi cho àïën khi Form2 biïën mêët bùçng Unload hay Hide múái chaåy tiïëp àûúåc. Nïëu baån muöën Form2 hiïån ra trong Modeless (khöng phaãi Modal) nhûng luön luön nùçm trïn Form1, ngay caã khi Form1 trúã thaânh active, duâng: Form2.Show ,Me ' Me laâ Form1 Laâm cho Form luön luön hiïån ra möåt chöî vaâ cuâng möåt cúä trong Sub Form_Load, duâng Move fLeft, fTop, fWidth, fHeight Àïí nhúá thûá tûå caác parameters trong Sub Move haäy nhúá toåa àöå coá X,Y . trong Sub Move ta noái àïën võ trñ X,Y ( fLeft, fTop) röìi cúã X,Y (fWidth, fHeight). Move laâ möåt method coá thïí àûúåc duâng cho Form hay Control vaâ rêët hiïåu quaã. Nïëu muöën Frame1 luön luön nùçm úã àónh traái, duâng: Frame1.move 0,0 Nïëu muöën chöî vaâ cúã cuãa Form 'configurable' (user coá thïí thay àöíi) thò chûáa caác dûâ kiïån àoá trong Registry röìi àoåc fLeft, fTop, fWidth, fHeight tûâ Registry trong Sub Form_Load. ( xem Function GetSetting ) Àïí cho Form2 hiïån ra bïn phaãi vaâ ngang haâng vúái Form1, trom Sub Form_Load cuãa Form2 duâng: Sub Form_Load() Move Form1.Width, Form1.Top End Sub Duâng Event naâo àïí update Form? Möîi khi trúã laåi möåt Form sau khi laâm viïåc úã möåt Form khaác, ta muöën 'update' möåt söë dûä kiïån àang àûúåc 'display' àïí phaãn aãnh nhûâng thay àöíi vûâa múái xaäy ra. Àïí code trong Sub Form_Activate. Laâm sao ta biïët möåt Form àaä àûúåc Loaded? Duâng Function sau àêy cuãa Microsoft: Function FormIsLoaded(MyFormName As String) As Boolean ' Determines if a form is loaded. Dim i As Integer FormIsLoaded = False For i = 0 To Forms.Count - 1 If Forms(i).FormName = MyFormName Then FormIsLoaded = True Exit Function ' Quit function once form has been found. End If Next i End Function Ài qua hïët collection cuãa Forms àïí xem coá Form naâo truâng tïn. Caách duâng: If FormIsLoaded("Form2") then MsgBox "Form2 is already loaded" End If Khöng cho User Unload Form bùçng caách click dêëu X Nhiïìu khi baån muöën thu xïëp moåi chuyïån àaâng hoaâng trûúác khi Unload möåt Form nïn baån laâm möåt Exit hay Close button cho user duâng. Àïí laâm mêët dêëu X phña àónh phaãi, 'set' Property ControlBox cuãa Form ra False. Nïëu laâm thïë nêìy coá àiïím bêët lúåi laâ khi 'minimize' Form, ta khöng thêëy icon cuãa Form. Coá möåt caách vêîn àïí nguyïn dêëu X, nhûng khi user click noá thò ta check 'unloadMode' trong Sub Form_QueryUnload àïí biïët lyá do taåi sao Form phaãi unload. Trong Sub Form_Unload coá thïí 'assign' Cancel ra True àïí 'abort' Unload. Nïëu baån muöën khöng cho user minimise Form thò set Property MinButton ra False. Laâm möåt Form giöëng möåt Form coá sùén Nhiïìu khi baån muöën laâm möåt Form giöëng giöëng möåt Form àaä coá sùén trong Project. Thñ duå baån muöën 'duplicate' Form2 àïí laâm nïn möåt Form3 àïí sau àoá sûäa chûäa noá chuát àónh. Baån laâm nhû sau: 1. Múã Form2 ra 2. Duâng Properties àïí àöíi tïn Form2 ra Form3 3. Duâng File | Save As menu command àïí chûáa Form nêìy dûúái tïn Form3.frm Bêy giúâ baån coá thïm Form3 trong Project, trong khi Form2.frm vêîn coân àoá nhûng khöng coân thuöåc vïì Project nûäa. Nïëu baån muöën cho noá vaâo Project trúã laåi thò duâng Project | Ad File .. menu command àïí choån Form2.frm boã vaâo Project. Laâm cho Controls biïën mêët Baån laâm cho möåt Control nhû Label, Textbox, ListBox .v..v biïën mêët bùçng caách cho Property 'visible' trúã nïn False, nhû: TxtName.visible = False Duâng TxtName.visible = True àïí laâm Textbox txtName hiïån ra trúã laåi. Khi muöën cho möåt nhoám Controls biïën mêët hay hiïån ra cuâng möåt luác, chûáa têët caã caác Controls êëy trong möåt container nhû Frame hay PctureBox, röìi chó cêìn laâm cho container êëy visible hay khöng. Invisible Control rêët tiïån duång khi ta duâng noá àïí chûáa dûä kiïån. Möåt TextBox taân hònh coá thïí Databound àïí lùång leä chûáa data lêëy tûâ möåt recordField cuãa current Record cho baån duâng. Baån cq•ng coá thïí 'assign' (cho noá bùçng) möåt value vaâo möåt Control taân hònh. Nïëu Control êëy Databound, value seä àûúåc viïët vaâo database khi àuáng luác. Choån nhiïìu Controls nhû möåt nhoám Choån nhiïìu Controls rêët tiïån cho viïåc assign möåt property cho caã nhoám qua Properties Window. Àïí choån nhiïìu Controls nhû möåt nhoám baån coá thïí 'rubber band' (quêën dêy thun) caã nhoám bùçng caách 'drag' con troã thaânh möåt hònh chûâ nhêåt bao caã nhoám laåi. Nïëu caác Controls êëy nùçm trong möåt container nhû Frame hay Picture box, trûúác hïët baån phaãi 'click' Form röìi kïë àoá àeâ nuát 'Ctrl' xuöëng trong khi 'rubber band' nhû noái trïn. Möåt khi caác Controls trong möåt nhoám àaä àûúåc choån röìi ta coá thïí duâng menu Format command àïí Align (ngang haâng) chuáng hay laâm cho chuáng cuâng cúã. Choån nhiïìu haâng trong ListBox Muöën cho user choån nhiïìu haâng trong Listbox ta phaãi set Property Multiselct cuãa Listbox ra Extended. Sau àoá user coá thïí choån nhiïìu haâng bùçng caách bêëm nuát Shift hay Ctrl trong khi Click nhûäng haâng. Nhúá laâ nïëu bêëm nuát Shift thò choån nhûäng haâng liïn tuåc giûäa hai caái click, coân bêëm nuát Ctrl thò choån hay khöng choån thïm tûâng haâng möåt. Möîi haâng trong Listbox List1 àûúåc cho thûá tûå tûâ 0 àïën List1.ListCount-1. Khi haâng i àûúåc selected thò List1.Selected(i) = True. Muöën 'deselect' (khöng choån) haâng àoá thò duâng List1.Selected(i) = False. 'Sort' caác haâng trong möåt Listbox Nïëu ta muöën nhûäng haâng trong möåt Listbox àûúåc sorted theo mêîu tûå (alphabetical order) thò khi thiïët kïë (at design time) set Property Sorted cuãa Listbox ra True. Trong khi xûã lyá ta khöng thay àöíi value cuãa Property Sorted àûúåc. Nïëu möåt Listbox àaä lúä coá Property Sorted = False maâ ta muöën Sort noá trong khi xûã lyá thò laâm sao? Baån àùåt thïm lïn Form möåt Listbox khaác. Listbox nêìy coá Property Sorted = True. Khi naâo muöën Sort caác haâng trong Listbox thûá nhêët ta laâm nhû sao: 1. Cheáp têët caã moåi haâng tûâ Listbox thûá nhêët qua Listbox thûá nhò, caác haâng seä àûúåc sorted tûå àöng trong Listbox thûá nhò. 2. Clear Listbox thûá nhêët 3. Cheáp moåi haâng tûâ Listbox thûá nhò qua Listbox thûá nhêët. Nhúá àûâng cho user thêëy Listbox thûá nhò bùçng caách set Property Visible cuãa noá ra False (taân hònh). Lûu yá Clear möåt Listbox trûúác khi cho möåt söë haâng múái vaâo vaâ khöng muöën giûä nhûäng haâng cq• bùçng caách duâng method Clear nhû List1.Clear. Sùæp ngay cöåt nhûäng chûä trong caác haâng khaác nhau cuãa Listbox Nïëu muöën têët caã caác chûä cöåt thûá 8 cuãa caác haâng trong möåt Listbox àûáng thùèng haâng chiïìu cao (vertically) baån coá thïí set Font cuãa Listbox ra Courier, möåt loåai Fixed Font. Têët caã caác chûä cuãa Fixed Font nhû Courier àïìu coá cq•ng chiïìu röång (character width). Ngûúåc laåi trong möåt Proportional spacing Font nhû "MS Sans Serif" chiïìu röång cuãa chûâ 'ñ nhoã hún cuãa chûâ 'm'. Nïëu baån muöën duâng Tab trong Listbox thò phaãi goåi möåt API Function àïí laâm cho Listbox chõu nhêån Tab (support Tab feature). Sùæp ngay cöåt nhûäng chûä trong caác haâng khaác nhau cuãa Listbox. Nïëu muöën têët caã caác chûä cöåt thûá 8 cuãa caác haâng trong möåt Listbox àûáng thùèng haâng chiïìu cao (vertically) baån coá thïí set Font cuãa Listbox ra Courier, möåt loåai Fixed Font. Têët caã caác chûä cuãa Fixed Font nhû Courier àïìu coá cq•ng chiïìu röång (character width). Ngûúåc laåi trong möåt Proportional spacing Font nhû "MS Sans Serif" chiïìu röång cuãa chûâ 'ñ nhoã hún cuãa chûâ 'm'. Nïëu baån muöën duâng Tab trong Listbox thò phaãi goåi möåt API Function àïí laâm cho Listbox chõu nhêån Tab (support Tab feature). Drag möåt haâng tûâ Listbox nêìy boã vaâo Listbox khaác Giaã sûã baån muöën Drag möåt haâng tûâ List1 boã vaâo List2 vaâ display noá úã cuöëi List2. Ta seä duâng Mousedown Event cuãa List1 maâ Drag. Khi bùæt àêìu Drag ta muöën MousePointer àöíi ra hònh möåt trang giêëy. Do àoá ta phaãi Browse directory àïí cho vaâo Property DragIcon cuãa List1 tïn möåt Icon File. Baån coá thïí vaâo Folder C:Program File\Microsoft Visual Studio\Common\Graphics\IconsDragDrop lïí choån möåt Icon File. Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) List1.Drag ' Bùæt àêìu drag End Sub Private Sub List2_DragDrop(Source As Control, X As Single, Y As Single) ' Source úã àêy laâ List1 List2.AddItem Source.Text ' Boã haâng tûâ List1 vö cuöëi List2 Source.RemoveItem Source.ListIndex ' Lêëy haâng ra khoãi List1 List2.Listindex = List2.Listcount-1 ' Hilight haâng cuöëi vaâ laâm cho noá àûúåc display End Sub Laâm sao biïët Drag Source laâ control naâo Ta coá thïí duâng Function Typename nhû: TypeName(Source) àïí xem noá laâ "ListBox" hay "TextBox" etc..hay duâng TypeOf nhû: If TypeOf Source Is ListBox Then Msgbox " Drag source is a ListBox" End If Ta cq•ng coá thïí duâng Name cuãa Source nhû: If Source.Name = "List1" thenMsgBox "Drag source is List1" End If Ngoaâi ra ta cq•ng coá thïí duâng Property Tag cuãa Source Control àïí chûáa möåt biïåt danh vaâ duâng giöëng nhû tïn cuãa Drag Source nhû: If Source.Tag = "MYLIST1" then MsgBox "Tag of Drag Source is: " & Source.Tag End If In nhûäng haâng àûúåc choån cuãa möåt ListBox Ta duâng Printer Object. Raáp têët caã nhûäng haâng àûúåc choån laåi thaânh möåt text string daâi, thïm vaâo cuöëi möîi haâng laâ Carriage Return / LineFeed ( vbCrLf ) . Dim i strOut = "" ' Initialise Output string khöng coá gò caã For i=0 to List1.Listcount-1 If List1.Selected(i) then strOut = strOut & List1.List(i) & vbCrLf End if Next Printer.Print strOut ' Gúãi text String ra Printer Printer.EndDoc ' Bùæt àêìu in ra Nïëu baån muöën in tûâng haâng thò duâng: Printer.Print List1.List(i) ' Khöng cêìn phaãi duâng vbVrLf Muöën in chûä àêåm thò múã BOLD lïn bùçng: Printer.FontBold = True vaâ khi naâo muöën tùæt chûä àêåm thò duâng: Printer.FontBold = False Bùæt buöåc user phaãi click ComboBox àïí choån möåt haâng Khi Form múái hiïån ra, nïëu àaä coá sùén möåt haâng chûä nùçm trong ComboBox, maâ àoá àuáng laâ haâng user muöën duâng, ta khöng coá dõp àïí duâng Event Click cuãa ComboBox àïí laâm chuyïån gò tuây thuöåc vaâo haâng maâ user àaä choån. Möåt maánh lúái laâ trûúác khi cho caác haâng vaâo ComboBox ta àïí möåt haâng tröëng, thñ duå nhû: Combo1.AddItem " " ComboBox seä nhû tröëng khöng khi Form múái hiïån ra, bùæt buöåc user phaãi choån möåt haâng chúá khöng duâng haâng àêìu 'by default' (tûå àöång coá nïëu khöng laâm gò). Laâm möåt Control hiïån ra trïn moåi trang cuãa Tab Control Möîi trang cuãa Tab Control chûáa riïng nhûäng Control cuãa noá. Nïëu baån muöën möåt Textbox, Listbox hay CommandButton hiïån ra trïn moåi trang cuãa Tab, baån taåo control àoá bïn ngoaâi Tab vaâ keáo noá vaâo àùåt lïn trïn Tab. Nïëy Control nùçm phña dûúái Tab, duâng VBIDE menu Comand "Format | Order | Bring to Front" àïí mang Control ra phña trûúác. Sùæp xïëp thûá tûå caác TextBox cho Data Entry Khi user àiïìn caác dûä kiïån vaâo möåt Form (Data Entry), user rúâi möîi TextBox bùçng caách bêëm nuát Tab. Kïë àoá MouseCursor nhaãy àïën TextBox coá Property TabIndex value theo thûá tûå sau TabIndex value cuãa TextBox vûâa rúâi khoãi. Thûúâng thûúâng ta cho TabIndex value theo thûá tûå tûâng cùåp LblName, txtName röìi lblAddress, txtAddress, v.v. coá TabIndex values thñ duå nhû 1,2,3,4. Khi txtName (TabIndex=2) mêët Focus, mouseCursor dúâi àïën lblAddress (TabIndex=3) , nhûng vò lblAddress laâ möåt Label nïn khöng chûáa mouseCursor àûúåc, do àoá mouseCursor nhaãy àïën txtAddress (TabIndex=4). Nïëu Caption cuãa lblAddress coá möåt character underlined, nhû lblAddress.Caption = "Add&ess" ' character "e" underlined khi user bêëm Alt+e bêët cûá luác naâo mousePointer seä nhaãy àïën lblAddress nhûng röët cuöåc rúát vaâo TextBox kïë àoá, tûác laâ txtAddress trong trûúâng húåp nêìy. Nïëu baån khöng muöën mousePointer àaáp vaâo möåt TextBox naâo set Property TabStop cuãa noá ra False. Baån cq•ng coá thïí khöng cho user thay àöíi dûä kiïån úã möåt TextBox bùçng caách set Property Enabled ra False hay Locked ra True. Laâm sao cho data vaâo trong ListBox hay ComboBox Khi Design ta coá thïí duâng Property List cuãa ListBox hay ComboBox àïí àaánh vaâo caác doâng data. Möîi khi xuöëng haâng phaãi nhúá duâng Ctrl+Enter chúá khöng phaãi Enter, nïëu khöng VBIDE tûúãng laâ baån àaä chêëm dûát data entry. Möåt caách khaác àïí cho data vaâo ListBox hay ComboBox laâ duâng Method AddItem trong Sub Form_Load, nhû: Sub Form_Load() Dim i For i=1 to 10 List1.AddItem "Line " & CStr(i) Next lstState.AddItem "NSW" lstState.AddItem "VIC" lstState.AddItem "QLD" lstState.AddItem "SA" lstState.AddItem "WA" lstState.AddItem "TAS" End Sub Sao khöng thêëy hònh trong CommandButton? Baån duâng Properties Window àïí àùåt möåt Picture vaâo möåt CommandButton bùçng caách Browse vaâ choån möåt Image File. Nhûng baån khöng thêëy Picture àêu caã. Baån coân cêìn phaãi set Propety Style cuãa CommandButton ra "Graphical", thay vò "Standard". Laâm sao àùåt icon lïn Toolbar laâm shortcut cho möåt menu command cuãa VBIDE? Duâng Menu command View | Toolbars | Customize àïí display Dialog Customize. Kïë àoá choån Tag Commands, bïn traái seä laâ möåt Listbox chûáa danh saách caác Categories vaâ bïn phaãi laâ nhûäng Commands thuöåc vïì Category àang àûúåc highlighted. Thûã select tûâng Category àïí tòm trong Listbox bïn phaãi caái Command coá icon maâ baån muöën. Drag icon àoá lïn Toolbar. Nhên dõp nêìy baån coá thïí boã möåt icon coá sùén trïn Toolbar bùçng caách Drag noá ra chöî khaác. Caác daång cuãa Ngaây vaâ Thò giúâ Duâng Function Format àïí lêëy ngaây giúâ theo daång baån muöën. Thñ duå: strToday = Format (Now(), "ddd dd-mmm-yyyy hh:nn:ss") · Now() cho ta hiïån giúâ (realtime lêëy tûâ àöìng höì cuãa CPU) · ddd cho Mon, Tue .vv.. · mmm cho Jul, Feb .vv.. Nhúá duâng "nn" cho phuát. Hai caách duâng Timer 1. Timer coá Interval tñnh bùçng milliseconds. Khi Timer1 àûúåc Enabled (tûác laâ Timer1.Enabled=True) noá seä chaåy Sub Timer1_Timer möîi Interval msecs. Thñ duå ta muöën Label1 chúáp tùæt (blink): Timer1.Interval = 500 ' Nûäa giêy Timer1.Enabled = True ' Bùæt àêìu chaåy Timer1 cho hïët interval Sub Timer1_Timer() Label1.Visible = NOT Label1.Visible End Sub Cûá möîi nûäa giêy hïí Label1 àang hiïån ra thò cho noá taân hònh vaâ ngûúåc laåi. Khi naâo muöën ngûng chúáp tùæt thò duâng: Timer1.Enabled = False Label1.Visible = True 2. Àïílaâm möåt viïåc trong tûúng lai, ta cq•ng duâng Timer nhûng ngay trong Sub Timer1_Timer ta àïí cêu Timer1.Enabled = False àïí tùæt Timer1 sau khi laâm xong cöng chuyïån. Thñ duå: Sub Timer1_Timer() Timer1.Enabled = False ' Ngûng Timer1 ' Àïí code laâm cöng chuyïån taåi àêy End Sub Àúåi möåt chuát Coá khi ngay úã giûâa code baån muöën àúåi (wait) möåt chuát. Baån coá thïí laâm theo baâi mêîu cuãa Microsoft nhû sau: Dim PauseTime, Start, Finish, TotalTime ' Code àang laâm viïåc nûäa chûâng PauseTime = 5 ' Set duration in seconds. Start = Timer 'Set start time as now Finish = Start + PauseTime ' set finish time Do While timer < Finish DoEvents ' Yield to other processes. Loop ' Code tiïëp tuåc cöng viïåc Timer duâng úã àêy laâ möåt Function coá sùén (in-built) cuãa VB chúá khöng phaãi Control Timer. Timer cho ta söë giêy kïí tûâ nûâa àïm. Ta duâng DoEvents àïí khoãi daânh hïët CPU time trong möåt closed Do While Loop. Noá nhûúâng cho caác process khaác chaåy trong khi chúâ àúåi Finish. Khi baån chaåy möåt Closed Loop giöëng nhû trïn vaâ assign cho Label1 möåt Caption vúái value biïën àöíi àïí Feedback cho user biïët tònh hònh diïîn tiïën àïën àêu, nïëu baån khöng duâng DoEvents giöëng nhû noái trïn, Label1 seä khöng coá dõp 'refresh' àïí 'display' value múái cuãa Label1.Caption. Khöng biïët baån coá àïí yá thêëy caách chúâ àúåi nhû trïn coá thïí gùåp trúã ngaåi nïëu luác bêëy giúâ laâ gêìn àïën nûâa àïm ñt hún 5 giêy. Khi àoá Finish seä lúán hún 3600*24 giêy vaâ Timer seä khöng bao giúâ àaåt àïën con söë êëy àïí nhaãy ra khoãi Loop. Giöëng nhû mònh lêåp gia àònh vêåy, seä laâm moåi suöët àúâi, khöng coá löëi thoaát. Möåt caách khaác àïí giaãi quyïët laâ ta nhúâ möåt Timer1 chaåy àöåc lêåp àïí cho biïët khi naâo thúâi gian àaä traãi qua (elapsed) bùçng caách set möåt 'variable' tïn blnElapsed ra True. blnElapsed phaãi àûúåc àïí trong phêìn General Declaration àïí caã code chñnh vaâ Sub Timer1_Timer àïìu thêëy noá. Dim blnElapsed as Boolean ' Declare in General section Sub Timer1_Timer() Timer1.Enabled = False blnElapse = True End Sub ' Code àang laâm viïåc nûäa chûâng blnElapsed = False Timer1.Interval = 5000 ' Set duration in msecs. Timer1.Enabled = True 'Start Timer1 Do DoEvents ' Yield to other processes. Loop Until blnElapsed ' Code tiïëp tuåc cöng viïåc Caách nêìy cq•ng àûúåc nhûng noá vêîn bùæt cheåt (hold up) CPU vaâ laâm caãn trúã caác processes khaác(àêy laâ giúái haån cuãa VB). Caách hoaân haão nhêët laâ ta àúåi bùçng caách duâng Timer1, nhûng àùåt phêìn code coân laåi àïí tiïëp tuåc cöng viïåc ngay trong Sub Timer1_Timer. ' Code àang laâm viïåc nûäa chûâng Timer1.Interval = 5000 ' Set duration in milliseconds. Timer1.Enabled = True 'Start Timer1 Sub Timer1_Timer() Timer1.Enabled = False ' Code tiïëp tuåc cöng viïåc End Sub Laâm thuâng raác chaáy lûãa nûäa giêy Trong khi xûã lyá, ta coá thïí biïën hònh cuãa möåt Image bùçng caách cho noá möåt Picture múái nhû: Image1.Picture = LoadPicture("PictureName.bmp") röìi bùæt àêìu möåt Timer vúái Interval bùçng 500 milliseconds. Àêìu tiïn àùåt möåt Timer tïn Timer1 lïn Form. Vò luác àêìu Timer1.Interval bùçng 0 nïn Timer1 chûa chaåy àûúåc (giöëng nhû Enabled = False) ' Cho hònh thuâng raác chaáy lûãa Image1.Picture = LoadPicture("TrashBinOnFire.bmp") Timer1.Interval = 500 Timer1.Enabled = True ' Nûäa giêy sau seä chaåy Timer1_Timer Sub Timer1_Timer() Timer1.Enabled =False ' Ngûng Timer1 ' Cho hònh thuâng raác thûúâng Image1.Picture = LoadPicture("TrashBin.bmp") End Sub Laâm sao àoåc tûâ möåt Text file Sau àêy laâ möåt thñ duå àoåc data tûâ möåt Textfile tïn "Friends.txt" nùçm trong cuâng folder vúái chûúng trònh àang xûã lyá. Sub Form_Load() Dim strALine as string Dim strLocalFolder as string Dim strFullPathFileName as string strLocalFolder = App.path If Right(strLocalFolder,1) "\" then strLocalFolder = strLocalFolder & "\" End If strFullPathFileName = strLocalFolder & "Friends.txt" Open strFullPathFileName for input as #1 lstFriend.Clear ' Clear ListBox lstFriend Do While Not EOF(1) ' Read till End-Of-File Line Input #1, strALine ' Read a line lstFriend.AddItem strALine 'Add that line to ListBox Loop Close #1 ' Close the file End Sub Laâm sao chûáa vaâo möåt Text file Sau àêy laâ möåt thñ duå àoåc data tûâ möåt Textfile tïn "Friends.txt" nùçm trong cuâng folder vúái chûúng trònh àang xûã lyá. Sub Form_Load() Dim i Dim strLocalFolder as string Dim strFullPathFileName as string strLocalFolder = App.path If Right(strLocalFolder,1) "\" then strLocalFolder = strLocalFolder & "\" End If strFullPathFileName = strLocalFolder & "Friends.txt" Open strFullPathFileName for output as #2 For i=0 to lstFriend.Listcount-1 Print #2, lstFriend.List(i) Next Close #2 ' Close the file End Sub Caách thûác Log möåt dûä kiïån vaâo möåt Text file ? Nhiïìu luác ta cêìn Log vaâo trong möåt LogFile caác biïën cöë xaäy ra trong khi nhu liïåu àang chaåy àïí sau nêìy kiïím laåi tònh hònh. Sub LogEvent(ByVal GivenFileName, ByVal msg As String, HasFolder As Boolean, IncludeTimeDate As Integer) ' Append event message Msg to a text Logfile GivenFileName ' If GivenFileName is fullPathName then HasFolder is true ' IncludeTimeDate = 0 : No Time or Date ' = 1 : Prefix with Time ' = 2 : Prefix with Time and Date Dim FileNo, LogFileName, theFolder If HasFolder Then LogFileName = GivenFileName Else If Right(App.Path, 1) "\" Then theFolder = App.Path & "\" Else theFolder = App.Path End If LogFileName = theFolder & GivenFileName End If FileNo = FreeFile If Dir(LogFileName) "" Then Open LogFileName For Append As FileNo Else Open LogFileName For Output As FileNo End If Select Case IncludeTimeDate Case 0 ' No Time or Date Print #FileNo, Msg Case 1 ' Time only Print #FileNo, Format(Now, "hh:nn:ss ") & Msg Case 2 ' Date & Time Print #FileNo, Format(Now, "dd/mm/yyyy hh:nn:ss ") & Msg End Select Close FileNo End Sub Coi chûâng trûúâng húåp LogEvent àûúåc goåi búãi hai Sub khaác nhau cuâng möåt luác. Khi Sub thûá nhò muöën múã LogFileName thò bõ error vò LogFileName àaä bõ Sub thûá nhêët múã röìi. Trong trûúâng húåp àoá ta coá thïí sûäa LogEvent laåi cho noá AddItem Msg vaâo möåt Listbox röìi giao nhiïåm vuå viïët xuöëng File cho möåt Process chuyïn viïn thûá ba. Caách thûác àoåc/viïët value cuãa möåt Variable tûâ möåt "ini" file ? Coá khi ta muöën àoåc value cuãa möåt variable chûáa trong möåt file coá extension laâ "ini" (coân goåi laâ configuration file) nùçm trong folder C:Windows hay c:WinNT. Trong file nêìy nhûäng cùåp variable=value nùçm trong caác sections, möîi Section header coá daång nhû [System Var]. Thñ duå "protocol.ini" chûáa nhûäng doâng sau: [ndishlp$] <= section header DriverName=ndishlp$ <= cùåp variable=value [protman$] <= section header DriverName=protman$ <= cùåp variable=value priority=ndishlp$ <= cùåp variable=value [data] <= section header version=v4.10.1998 <= cùåp variable=value Duâng Function ReadPrivateProfileString sau àêy àïí àoåc value cuãa VarName$ dûúái section header SectionHeader$ tûâ file Filename$: Function ReadPrivateProfileString( SectionHeader$, VarName$, Filename$) As String ' Read data from an Ini file in default Windows directory ' Filename$ : The Ini file name eg: myProg.ini ' SectionHeader$ : The Section name in Ini file eg: [System Var] ' VarName$ : Variable name whose data value we want to get Dim RetStr As String RetStr = String(255, Chr(0)) ' Prepare a string of 255 zeros (number). 'Get Requested Information ReadPrivateProfileString = Left(RetStr, GetPrivateProfileString(SectionHeader$, ByVal VarName$, "", RetStr, Len(RetStr), Filename$)) End Function Tûúng túå nhû vêåy, ta coá thïí viïët value múái cuãa möåt variable vaâo trong möåt "ini" file nhû sau: Dim ErrCode ErrCode = WritePrivateProfileString(SectionHeader$, VarName$,newValue, Filename$) Nhúá àïí hai cêu tuyïn böë cho caác API Function ta cêìn vaâo möåt Basic Module: Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Public Declare Function WritePrivateProfileString& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal Filename$) Àöíi Enter key ra Tab key Khi user àiïìn caác dûä kiïån vaâo möåt Form (Data Entry), thûúâng thûúâng user rúâi möîi TextBox bùçng caách bêëm nuát Tab. Coá khi user 'prefer' (chuöång hún) duâng Enter key thay vò Tab key. Baån coá thïí duâng Event Keypress cuãa TextBox àïí àöíi Enter ra Tab. Thñ duå: Private Sub TxtName_KeyPress(KeyAscii As Integer) If KeyAscii = vbCr then KeyAscii = 0 ' Nuöët troån Enter key àïí khöng bõ side effect ' Emulate (laâm giöëng nhû) bêëm nuát Tab bùçng caách duâng SendKeys Sendkeys "{TAB}" End if End Sub Event Keypress cuãa TextBox àûúåc duâng nhû trïn rêët töët. Nhûng nïëu Form coá rêët nhiïìu TextBox ta coá thïí traánh lêåp laåi viïåc duâng KeyPress Event cuãa tûâng TextBox bùçng caách duâng Sub Form_Keypress, nhû: Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = vbCr then KeyAscii = 0 ' Nuöët troån Enter key àïí khöng bõ side effect Sendkeys "{TAB}" End if End Sub Àïí nhùæc Form chuåp lêëy Keystroke trûúác TextBoxes, ta phaãi set Form Property 'KeyPreview' ra True, nïëu khöng Sub Form_Keypress khöng bao giúâ àûúåc goåi. Àöíi daång MousePointer ra àöìng höì caát Khi program sùæp laâm chuyïån gò húi lêu, baån muöën cho user biïët laâ program àang laâm viïåc chúá khöng phaãi chïët àûáng (hang) nhû khi mònh gùåp ngûúâi àeåp lêìn àêìu, duâng: Screen.MousePointer = vbHourglass ' Biïën MousePointer ra hònh àöìng höì caát ' Boã Codes vö àêy . . . Screen.MousePointer = vbDefault ' Biïën MousePointer trúã laåi daång bònh thûúâng Kiïëm Help cho caác Functions Trong khi àang viïët program, thñ duå baån muöën àoåc vïì caách duâng 'Select'. Àaánh chûä 'Select' àoaån 'highlight' noá röìi bêëm nuát F1. Nhúá laâ baån coá thïí 'highlight' möåt chûä bùçng caách àïí con troã (mousepointer) lïn trïn chûä àoá àoaån 'doubleClick'. Nïëu baån khöng biïët chùæc möåt tïn Function àaánh vêìn nhû thïë naâo, thñ duå baån khöng nhúá rùçng Function 'Sendkeys' coá chûä 's' úã cuöëi khöng. Thûã àaánh 'Sendk' röìi bêëm 'Ctrl+Space' (nhêën nuát 'Ctrl' trong khi bêëm Space bar), VBIDE (Visual Basic Integrated Development Environment) seä àaánh nhûâng chûâ coân laåi cuãa chûâ 'SendKeys'. Nïëu baån chûa àaánh gò hïët maâ bêëm 'Ctrl+Space', VBIDE seä 'pop-up' danh saách cuãa têët caã Functions coá thïí duâng àûúåc luác nêìy, cuãa VB vaâ cuãa chñnh baån àang viïët. Do àoá baån coá thïí àùåt tïn Constant hay Function, Sub cuãa mònh bùæt àêìu bùçng nhûâng 'characters' dïî nhúá, vaâ duâng tïn daâi cho dïî àoåc. Thñ duå baån duâng 'my' laâm hai characters bùæt àêìu: Const myTableSize = 20 Sub mySortRoutineForHTML Sau àoá chó cêìn àaánh 'mySo' Ctrl+Space seä ra troån chûä mySortRoutineForHTML. Duâng Docket Dot Matrix Printer Nïëu baån duâng Docket Dot Matrix Printer thò khöng thïí xaâi möåt Windows Printer Driver bònh thûúâng àûúåc, vò noá in hònh aãnh cuãa caã möåt trang trong khi ta muöën in tûâ doâng. Ta phaãi vö Start | Settings | Printers àïí Add möåt Generic / Text Only printer driver. Kïë àoá nïëu cêìn baån cho vaâo nhûäng Control Command Strings àïí in BOLD, ITALIC, v.v. lêëy tûâ Cêím nang cuãa printer. Thñ duå söë 28 àïí múã BOLD, 29 àïí tùæt BOLD. Nïëu Docket Printer coá thïí in maâu àoã vaâ baån khöng cêìn duâng ITALIC, baån coá thïí cho Control Command Strings cuãa múã tùæt maâu àoã vaâo chöî múã tùæt ITALIC. Sau àoá khi trong code baån múã ITALIC thò thêåt ra driver gúãi Control Command String cho múã maâu àoã. Thñ du: Printer.FontItalic = True ' múã maâu àoã Printer.Print " ** SUPER DISCOUNT STORE **" Printer.FontItalic = False ' tùæt maâu àoã Printer.Print "1 T Shirt $24.50" Printer.FontIBold = True ' múã chûä àêåm Printer.Print " Total: $24.50" Printer.FontIBold = True ' tùæt chûä àêåm Printer.Print "Thank you" Printer.EndDoc Nïëu Docket Printer khöng xuöëng haâng àaâng hoaâng, baån gúãi troån 40 characters ra cho möîi haâng, (40 characters laâ chiïìu röång cuãa Docket) Muöën gúãi troån 40 characters baån phaãi gheáp thïm blank spaces cho möîi doâng daâi àuã 40 characters. Thñ duå: strLine = Space(40) ' Initialise 40 blank spaces Mid(strLine,15,9) = "Thank you" ' Nheát hai chûä Thank you vaâo, bùæt àêìu tûâ cöåt 15 Printer.Print strLine Cho Application möåt Icon Baån coá thïí cho möîi Form möåt icon bùçng caách duâng Property Icon trong Properties Window cuãa Form àïí choån möåt icon file. Möîi khi möåt Form àûúåc Minimised ta seä thêëy Icon cuãa noá trïn Desktop. Bêy giúâ muöën duâng icon cuãa möåt Form laâm icon cuãa Application (nhu liïåu), baån duâng menu command Project | Project? Properties. Khi Dialog hiïån ra choån Tab 'Make' vaâ click Icon combo box àïí choån Form baån muöën chó àõnh. VB shorcut Keys Find Ctrl+F Replace Ctrl+H Find Next F3 Copy Ctrl+C Cut Ctrl+X Paste Ctrl+V Undo Ctrl+Z Delete Current Line Ctrl+Y Delete to End of Word Ctrl+Delete View Code Window F7 View Definition of Sub/Function Shift+F2 Go to last position Ctrl+Shift+F2 Debug Step Into F8 Debug Step Over Sub/Function Shift+F8 View Object Browser F2 View Prperties Window F4 Comment (biïën cêu code thaânh cêu chuá thñch) / Indent (cho xñt vö) möåt söë doâng code Nïëu khöng thêëy Edit Toolbar thò duâng menu command View | Toolbars | Edit àïí laâm Edit Toolbar hiïån ra. Choån möåt söë doâng code baån muöën laâm viïåc àoaån duâng Comment/Uncomment, Indent/Unindent buttons àïí xûã lyá.

Các file đính kèm theo tài liệu này:

  • pdfThủ thuật visual basic.pdf
Tài liệu liên quan