MC LC Lâm cho Form ln ln hiïån ra mưåt chưỵ vâ cng mưåt cúä . 2 Dng Event nâo àïí update Form? 3 Lâm sao ta biïët mưåt Form àậ àûúåc Loaded? 3 Lâm mưåt Form giưëng mưåt Form cố sùén 4 Lâm cho Controls biïën mêët . 5 Chổn nhiïìu Controls nhû mưåt nhốm 5 Chổn nhiïìu hâng trong ListBox . 5 'Sort' cấc hâng trong mưåt Listbox .6 Sùỉp ngay cưåt nhûäng chûä trong cấc hâng khấc nhau ca Listbox. . 6 Drag mưåt hâng tûâ Listbox nêìy bỗ vâo Listbox khấc 6 Lâm sao biïët Drag Source lâ control nâo . 7 In nhûäng hâng àûúåc chổn ca mưåt ListBox 8 Bùỉt båc user phẫi click ComboBox àïí chổn mưåt hâng . 8 Lâm mưåt Control hiïån ra trïn mổi trang ca Tab Control 8 Sùỉp xïëp thûá tûå cấc TextBox cho Data Entry 9 Lâm sao cho data vâo trong ListBox hay ComboBox 9 Sao khưng thêëy hònh trong CommandButton? 10 Lâm sao àùåt icon lïn Toolbar lâm shortcut cho mưåt menu command ca VBIDE? 10 Cấc dẩng ca Ngây vâ Thò giúâ 10 Lâm sao àổc tûâ mưåt Text file . 14 Lâm sao chûáa vâo mưåt Text file 14 Cấch thûác Log mưåt dûä kiïån vâo mưåt Text file ? 15 Cấch thûác àổc/viïët value ca mưåt Variable tûâ mưåt "ini" file ? . 17 Àưíi Enter key ra Tab key 18 Àưíi dẩng MousePointer ra àưìng hưì cất 19 Kiïëm Help cho cấc Functions 19 Dng Docket Dot Matrix Printer 20 Cho Application mưåt Icon 21 VB shorcut Keys 21 Lâm hiïån ra mưåt Form khấc Giẫ sûã bẩn àang úã trong Form1 vâ mën lâm cho Form2 hiïån ra, hậy sûã dng: Form2.Show Khi mën dêëu Form2, dng: Form2.Hide Khi mưåt Form àûúåc 'Show' lêìn àêìu tiïn, nố àûúåc 'Load' (cho thânh hònh) vâ 'Show' ngay sau àố. Khi mưåt Form àậ cố rưìi, tûác lâ àậ àûúåc 'Load' rưìi, lc bẩn 'Hide' nố cq•ng giưëng nhû kếo mưåt têëm mân che nố lẩi. Kïë àố, khi bẩn 'Show' nố cq•ng giưëng nhû múã mân ra, khưng cố gò ẫnh hûúãng Form. Bẩn cố thïí cho Form biïën mêët bùçng cấch 'Unload' nố, nhû: Unload Form2 Lêìn túái khi bẩn 'Show' nố, Form sệ àûúåc 'Load' trúã lẩi. Mưỵi khi Form àûúåc 'Load', nố 'execute' sub Form_Load. Form_Load lâ núi bẩn viïët cấc 'statements' àïí 'initialise' Form, tûác lâ nhûäng gò cêìn phẫi àûúåc sùỉp xïëp cho sùén sâng trûúác khi Form thânh hònh. Do àố bẩn phẫi quët àõnh khi nâo dng Unload hay Hide àï? Lâm cho Form biïën mêët. Nhúá rùçng mưỵi khi Form àûúåc 'Load' thò nố 'initialise' vâ mêët mưåt đt thò giúâ. Nïëu bẩn mën lâm cho mưåt Form hiïån ra vâ khiïën nố dânh nhêån têët cẫ 'keystrokes' vâ 'mouse clicks' thò dng: Form2.Show vbModal Ngay sau khi Form2 àûúåc 'Show' dûúái dẩng vbModal, nố dânh ngay CPU process, àïën àưíi statement nùçm ngay dûúái àố trong Form1 cq•ng àúåi cho àïën khi Form2 biïën mêët bùçng Unload hay Hide múái chẩy tiïëp àûúåc. Nïëu bẩn mën Form2 hiïån ra trong Modeless (khưng phẫi Modal) nhûng ln ln nùçm trïn Form1, ngay cẫ khi Form1 trúã thânh active, dng: Form2.Show ,Me ' Me lâ Form1 Lâm cho Form ln ln hiïån ra mưåt chưỵ vâ cng mưåt cúä trong Sub Form_Load, dng Move fLeft, fTop, fWidth, fHeight Àïí nhúá thûá tûå cấc parameters trong Sub Move hậy nhúá tổa àưå cố X,Y . trong Sub Move ta nối àïën võ trđ X,Y ( fLeft, fTop) rưìi cúã X,Y (fWidth, fHeight). Move lâ mưåt method cố thïí àûúåc dng cho Form hay Control vâ rêët hiïåu quẫ. Nïëu mën Frame1 ln ln nùçm úã àónh trấi, dng: Frame1.move 0,0 Nïëu mën chưỵ vâ cúã ca Form 'configurable' (user cố thïí thay àưíi) thò chûáa cấc dûâ kiïån àố trong Registry rưìi àổc fLeft, fTop, fWidth, fHeight tûâ Registry trong Sub Form_Load. ( xem Function GetSetting ) Àïí cho Form2 hiïån ra bïn phẫi vâ ngang hâng vúái Form1, trom Sub Form_Load ca Form2 dng: Sub Form_Load() Move Form1.Width, Form1.Top End Sub Dng Event nâo àïí update Form? Mưỵi khi trúã lẩi mưåt Form sau khi lâm viïåc úã mưåt Form khấc, ta mën 'update' mưåt sưë dûä kiïån àang àûúåc 'display' àïí phẫn ẫnh nhûâng thay àưíi vûâa múái xậy ra. Àïí code trong Sub Form_Activate. Lâm sao ta biïët mưåt Form àậ àûúåc Loaded? Dng Function sau àêy ca 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 ca Forms àïí xem cố Form nâo trng tïn. Cấch dng: If FormIsLoaded("Form2") then MsgBox "Form2 is already loaded" End If Khưng cho User Unload Form bùçng cấch click dêëu X Nhiïìu khi bẩn mën thu xïëp mổi chuån àâng hoâng trûúác khi Unload mưåt Form nïn bẩn lâm mưåt Exit hay Close button cho user dng. Àïí lâm mêët dêëu X phđa àónh phẫi, 'set' Property ControlBox ca Form ra False. Nïëu lâm thïë nêìy cố àiïím bêët lúåi lâ khi 'minimize' Form, ta khưng thêëy icon ca Form. Cố mưåt cấch vêỵn àïí ngun dêëu X, nhûng khi user click nố thò ta check 'unloadMode' trong Sub Form_QueryUnload àïí biïët l do tẩi sao Form phẫi unload. Trong Sub Form_Unload cố thïí 'assign' Cancel ra True àïí 'abort' Unload. Nïëu bẩn mën khưng cho user minimise Form thò set Property MinButton ra False. Lâm mưåt Form giưëng mưåt Form cố sùén Nhiïìu khi bẩn mën lâm mưåt Form giưëng giưëng mưåt Form àậ cố sùén trong Project. Thđ d bẩn mën 'duplicate' Form2 àïí lâm nïn mưåt Form3 àïí sau àố sûäa chûäa nố cht àónh. Bẩn lâm nhû sau: 1. Múã Form2 ra 2. Dng Properties àïí àưíi tïn Form2 ra Form3 3. Dng File | Save As menu command àïí chûáa Form nêìy dûúái tïn Form3.frm Bêy giúâ bẩn cố thïm Form3 trong Project, trong khi Form2.frm vêỵn côn àố nhûng khưng côn thåc vïì Project nûäa. Nïëu bẩn mën cho nố vâo Project trúã lẩi thò dng Project | Ad File menu command àïí chổn Form2.frm bỗ vâo Project. Lâm cho Controls biïën mêët Bẩn lâm cho mưåt Control nhû Label, Textbox, ListBox .v v biïën mêët bùçng cấch cho Property 'visible' trúã nïn False, nhû: TxtName.visible = False Dng TxtName.visible = True àïí lâm Textbox txtName hiïån ra trúã lẩi. Khi mën cho mưåt nhốm Controls biïën mêët hay hiïån ra cng mưåt lc, chûáa têët cẫ cấc Controls êëy trong mưåt container nhû Frame hay PctureBox, rưìi chó cêìn lâm cho container êëy visible hay khưng. Invisible Control rêët tiïån dng khi ta dng nố àïí chûáa dûä kiïån. Mưåt TextBox tân hònh cố thïí Databound àïí lùång lệ chûáa data lêëy tûâ mưåt recordField ca current Record cho bẩn dng. Bẩn cq•ng cố thïí 'assign' (cho nố bùçng) mưåt value vâo mưåt Control tân hònh. Nïëu Control êëy Databound, value sệ àûúåc viïët vâo database khi àng lc. Chổn nhiïìu Controls nhû mưåt nhốm Chổn nhiïìu Controls rêët tiïån cho viïåc assign mưåt property cho cẫ nhốm qua Properties Window. Àïí chổn nhiïìu Controls nhû mưåt nhốm bẩn cố thïí 'rubber band' (qën dêy thun) cẫ nhốm bùçng cấch 'drag' con trỗ thânh mưåt hònh chûâ nhêåt bao cẫ nhốm lẩi. Nïëu cấc Controls êëy nùçm trong mưåt container nhû Frame hay Picture box, trûúác hïët bẩn phẫi 'click' Form rưìi kïë àố àê nt 'Ctrl' xëng trong khi 'rubber band' nhû nối trïn. Mưåt khi cấc Controls trong mưåt nhốm àậ àûúåc chổn rưìi ta cố thïí dng menu Format command àïí Align (ngang hâng) chng hay lâm cho chng cng cúã. Chổn nhiïìu hâng trong ListBox Mën cho user chổn nhiïìu hâng trong Listbox ta phẫi set Property Multiselct ca Listbox ra Extended. Sau àố user cố thïí chổn nhiïìu hâng bùçng cấch bêëm nt Shift hay Ctrl trong khi Click nhûäng hâng. Nhúá lâ nïëu bêëm nt Shift thò chổn nhûäng hâng liïn tc giûäa hai cấi click, côn bêëm nt Ctrl thò chổn hay khưng chổn thïm tûâng hâng mưåt. Mưỵi hâng trong Listbox List1 àûúåc cho thûá tûå tûâ 0 àïën List1.ListCount-1. Khi hâng i àûúåc selected thò List1.Selected(i) = True. Mën 'deselect' (khưng chổn) hâng àố thò dng List1.Selected(i) = False. 'Sort' cấc hâng trong mưåt Listbox Nïëu ta mën nhûäng hâng trong mưåt Listbox àûúåc sorted theo mêỵu tûå (alphabetical order) thò khi thiïët kïë (at design time) set Property Sorted ca Listbox ra True. Trong khi xûã l ta khưng thay àưíi value ca Property Sorted àûúåc. Nïëu mưåt Listbox àậ lúä cố Property Sorted = False mâ ta mën Sort nố trong khi xûã l thò lâm sao? Bẩn àùåt thïm lïn Form mưåt Listbox khấc. Listbox nêìy cố Property Sorted = True. Khi nâo mën Sort cấc hâng trong Listbox thûá nhêët ta lâm nhû sao: 1. Chếp têët cẫ mổi hâng tûâ Listbox thûá nhêët qua Listbox thûá nhò, cấc hâng sệ àûúåc sorted tûå àưng trong Listbox thûá nhò. 2. Clear Listbox thûá nhêët 3. Chếp mổi hâng tûâ Listbox thûá nhò qua Listbox thûá nhêët. Nhúá àûâng cho user thêëy Listbox thûá nhò bùçng cấch set Property Visible ca nố ra False (tân hònh). Lûu Clear mưåt Listbox trûúác khi cho mưåt sưë hâng múái vâo vâ khưng mën giûä nhûäng hâng cq• bùçng cấch dng method Clear nhû List1.Clear. Sùỉp ngay cưåt nhûäng chûä trong cấc hâng khấc nhau ca Listbox Nïëu mën têët cẫ cấc chûä cưåt thûá 8 ca cấc hâng trong mưåt Listbox àûáng thùèng hâng chiïìu cao (vertically) bẩn cố thïí set Font ca Listbox ra Courier, mưåt lổai Fixed Font. Têët cẫ cấc chûä ca Fixed Font nhû Courier àïìu cố cq•ng chiïìu rưång (character width). Ngûúåc lẩi trong mưåt Proportional spacing Font nhû "MS Sans Serif" chiïìu rưång ca chûâ 'đ nhỗ hún ca chûâ 'm'. Nïëu bẩn mën dng Tab trong Listbox thò phẫi gổi mưåt API Function àïí lâm cho Listbox chõu nhêån Tab (support Tab feature). Sùỉp ngay cưåt nhûäng chûä trong cấc hâng khấc nhau ca Listbox. Nïëu mën têët cẫ cấc chûä cưåt thûá 8 ca cấc hâng trong mưåt Listbox àûáng thùèng hâng chiïìu cao (vertically) bẩn cố thïí set Font ca Listbox ra Courier, mưåt lổai Fixed Font. Têët cẫ cấc chûä ca Fixed Font nhû Courier àïìu cố cq•ng chiïìu rưång (character width). Ngûúåc lẩi trong mưåt Proportional spacing Font nhû "MS Sans Serif" chiïìu rưång ca chûâ 'đ nhỗ hún ca chûâ 'm'. Nïëu bẩn mën dng Tab trong Listbox thò phẫi gổi mưåt API Function àïí lâm cho Listbox chõu nhêån Tab (support Tab feature). Drag mưåt hâng tûâ Listbox nêìy bỗ vâo Listbox khấc Giẫ sûã bẩn mën Drag mưåt hâng tûâ List1 bỗ vâo List2 vâ display nố úã cëi List2. Ta sệ dng Mousedown Event ca List1 mâ Drag. Khi bùỉt àêìu Drag ta mën MousePointer àưíi ra hònh mưåt trang giêëy. Do àố ta phẫi Browse directory àïí cho vâo Property DragIcon ca List1 tïn mưåt Icon File. Bẩn cố thïí vâo Folder C:Program File\Microsoft Visual Studio\Common\Graphics\IconsDragDrop lïí chổ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 lâ List1 List2.AddItem Source.Text ' Bỗ hâng tûâ List1 vư cëi List2 Source.RemoveItem Source.ListIndex ' Lêëy hâng ra khỗi List1 List2.Listindex = List2.Listcount-1 ' Hilight hâng cëi vâ lâm cho nố àûúåc display End Sub Lâm sao biïët Drag Source lâ control nâo Ta cố thïí dng Function Typename nhû: TypeName(Source) àïí xem nố lâ "ListBox" hay "TextBox" etc hay dng TypeOf nhû: If TypeOf Source Is ListBox Then Msgbox " Drag source is a ListBox" End If Ta cq•ng cố thïí dng Name ca Source nhû: If Source.Name = "List1" thenMsgBox "Drag source is List1" End If Ngoâi ra ta cq•ng cố thïí dng Property Tag ca Source Control àïí chûáa mưåt biïåt danh vâ dng giưëng nhû tïn ca Drag Source nhû: If Source.Tag = "MYLIST1" then MsgBox "Tag of Drag Source is: " & Source.Tag End If In nhûäng hâng àûúåc chổn ca mưåt ListBox Ta dng Printer Object. Rấp têët cẫ nhûäng hâng àûúåc chổn lẩi thânh mưåt text string dâi, thïm vâo cëi mưỵi hâng lâ Carriage Return / LineFeed ( vbCrLf ) . Dim i strOut = "" ' Initialise Output string khưng cố gò cẫ 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 bẩn mën in tûâng hâng thò dng: Printer.Print List1.List(i) ' Khưng cêìn phẫi dng vbVrLf Mën in chûä àêåm thò múã BOLD lïn bùçng: Printer.FontBold = True vâ khi nâo mën tùỉt chûä àêåm thò dng: Printer.FontBold = False Bùỉt båc user phẫi click ComboBox àïí chổn mưåt hâng Khi Form múái hiïån ra, nïëu àậ cố sùén mưåt hâng chûä nùçm trong ComboBox, mâ àố àng lâ hâng user mën dng, ta khưng cố dõp àïí dng Event Click ca ComboBox àïí lâm chuån gò ty thåc vâo hâng mâ user àậ chổn. Mưåt mấnh lúái lâ trûúác khi cho cấc hâng vâo ComboBox ta àïí mưåt hâng trưëng, thđ d nhû: Combo1.AddItem " " ComboBox sệ nhû trưëng khưng khi Form múái hiïån ra, bùỉt båc user phẫi chổn mưåt hâng chúá khưng dng hâng àêìu 'by default' (tûå àưång cố nïëu khưng lâm gò). Lâm mưåt Control hiïån ra trïn mổi trang ca Tab Control Mưỵi trang ca Tab Control chûáa riïng nhûäng Control ca nố. Nïëu bẩn mën mưåt Textbox, Listbox hay CommandButton hiïån ra trïn mổi trang ca Tab, bẩn tẩo control àố bïn ngoâi Tab vâ kếo nố vâo àùåt lïn trïn Tab. Nïëy Control nùçm phđa dûúái Tab, dng VBIDE menu Comand "Format | Order | Bring to Front" àïí mang Control ra phđa trûúác. Sùỉp xïëp thûá tûå cấc TextBox cho Data Entry Khi user àiïìn cấc dûä kiïån vâo mưåt Form (Data Entry), user rúâi mưỵi TextBox bùçng cấch bêëm nt Tab. Kïë àố MouseCursor nhẫy àïën TextBox cố Property TabIndex value theo thûá tûå sau TabIndex value ca TextBox vûâa rúâi khỗi. Thûúâng thûúâng ta cho TabIndex value theo thûá tûå tûâng cùåp LblName, txtName rưìi lblAddress, txtAddress, v.v. cố TabIndex values thđ d nhû 1,2,3,4. Khi txtName (TabIndex=2) mêët Focus, mouseCursor dúâi àïën lblAddress (TabIndex=3) , nhûng vò lblAddress lâ mưåt Label nïn khưng chûáa mouseCursor àûúåc, do àố mouseCursor nhẫy àïën txtAddress (TabIndex=4). Nïëu Caption ca lblAddress cố mưåt character underlined, nhû lblAddress.Caption = "Add&ess" ' character "e" underlined khi user bêëm Alt+e bêët cûá lc nâo mousePointer sệ nhẫy àïën lblAddress nhûng rưët cåc rúát vâo TextBox kïë àố, tûác lâ txtAddress trong trûúâng húåp nêìy. Nïëu bẩn khưng mën mousePointer àấp vâo mưåt TextBox nâo set Property TabStop ca nố ra False. Bẩn cq•ng cố thïí khưng cho user thay àưíi dûä kiïån úã mưåt TextBox bùçng cấch set Property Enabled ra False hay Locked ra True. Lâm sao cho data vâo trong ListBox hay ComboBox Khi Design ta cố thïí dng Property List ca ListBox hay ComboBox àïí àấnh vâo cấc dông data. Mưỵi khi xëng hâng phẫi nhúá dng Ctrl+Enter chúá khưng phẫi Enter, nïëu khưng VBIDE tûúãng lâ bẩn àậ chêëm dûát data entry. Mưåt cấch khấc àïí cho data vâo ListBox hay ComboBox lâ dng 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" [...]... 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 xëng hâng àâng hoâng, bẩn gúãi trổn 40 characters ra cho mưỵi hâng, (40 characters lâ chiïìu rưång ca Docket) Mën gúãi trổn 40 characters bẩn phẫi ghếp thïm blank spaces cho mưỵi dông dâi à 40 characters Thđ d: strLine = Space(40) ' Initialise... àổc Thđ d bẩn dng 'my' lâm hai characters bùỉt àêìu: Const myTableSize = 20 Sub mySortRoutineForHTML Sau àố chó cêìn àấnh 'mySo' Ctrl+Space sệ ra trổn chûä mySortRoutineForHTML Dng Docket Dot Matrix Printer Nïëu bẩn dng Docket Dot Matrix Printer thò khưng thïí xâi mưåt Windows Printer Driver bònh thûúâng àûúåc, vò nố in hònh ẫnh ca cẫ mưåt trang trong khi ta mën in tûâ dông Ta phẫi vư Start | Settings... Function àấnh vêìn nhû thïë nâo, thđ d bẩn khưng nhúá rùçng Function 'Sendkeys' cố chûä 's' úã cëi khưng Thûã àấnh 'Sendk' rưìi bêëm 'Ctrl+Space' (nhêën nt 'Ctrl' trong khi bêëm Space bar), VBIDE (Visual Basic Integrated Development Environment) sệ àấnh nhûâng chûâ côn lẩi ca chûâ 'SendKeys' Nïëu bẩn chûa àấnh gò hïët mâ bêëm 'Ctrl+Space', VBIDE sệ 'pop-up' danh sấch ca têët cẫ Functions cố thïí dng... mưåt Generic / Text Only printer driver Kïë àố nïëu cêìn bẩn cho vâo nhûäng Control Command Strings àïí in BOLD, ITALIC, v.v lêëy tûâ Cêím nang ca printer Thđ d sưë 28 àïí múã BOLD, 29 àïí tùỉt BOLD Nïëu Docket Printer cố thïí in mâu àỗ vâ bẩn khưng cêìn dng ITALIC, bẩn cố thïí cho Control Command Strings ca múã tùỉt mâu àỗ vâo chưỵ múã tùỉt ITALIC Sau àố khi trong code bẩn múã ITALIC thò thêåt ra driver... variable vâo trong mưåt "ini" file nhû sau: Dim ErrCode ErrCode = WritePrivateProfileString(SectionHeader$, VarName$,newValue, Filename$) Nhúá àïí hai cêu tun bưë cho cấc API Function ta cêìn vâ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 . bêëy giúâ lâ gêìn àïën nûâa àïm đt hún 5 giêy. Khi àố Finish sệ lúán hún 3 60 0*24 giêy vâ Timer sệ khưng bao giúâ àẩt àïën con sưë êëy àïí nhẫy ra khỗi. ' Code àang lâm viïåc nûäa chûâng blnElapsed = False Timer1.Interval = 500 0 ' Set duration in msecs. Timer1.Enabled = True 'Start Timer1 Do