SlideShare a Scribd company logo
1 of 22
Download to read offline
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 FileMicrosoft Visual StudioCommonGraphicsIconsDragDrop
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á.

More Related Content

What's hot

KCS IFDe - Phần mềm triển khai chi tiết Móng đơn
KCS IFDe - Phần mềm triển khai chi tiết Móng đơnKCS IFDe - Phần mềm triển khai chi tiết Móng đơn
KCS IFDe - Phần mềm triển khai chi tiết Móng đơnHồ Việt Hùng
 
Thiết kế và gia công trên Mastercam X6
Thiết kế và gia công trên Mastercam X6Thiết kế và gia công trên Mastercam X6
Thiết kế và gia công trên Mastercam X6Cửa Hàng Vật Tư
 
PBC 2015 Tính toán sức chịu tải của cọc
PBC 2015 Tính toán sức chịu tải của cọcPBC 2015 Tính toán sức chịu tải của cọc
PBC 2015 Tính toán sức chịu tải của cọcDaohathiepThiep
 
Tự học Autocad 2007 full
Tự học Autocad 2007 fullTự học Autocad 2007 full
Tự học Autocad 2007 fullHades Nguyễn
 
Thiết kế và gia công hình học 2D trên Mastercam
Thiết kế và gia công hình học 2D trên MastercamThiết kế và gia công hình học 2D trên Mastercam
Thiết kế và gia công hình học 2D trên MastercamCửa Hàng Vật Tư
 
Chuong 08 menu and toolbar
Chuong 08   menu and toolbarChuong 08   menu and toolbar
Chuong 08 menu and toolbarHung Pham Thai
 
Phần mềm RCCd - Triển khai chi tiết cột, vách
Phần mềm RCCd - Triển khai chi tiết cột, váchPhần mềm RCCd - Triển khai chi tiết cột, vách
Phần mềm RCCd - Triển khai chi tiết cột, váchDaohathiepThiep
 
đáp án tin học thi công chức thuế mới nhất
đáp án tin học thi công chức thuế mới nhấtđáp án tin học thi công chức thuế mới nhất
đáp án tin học thi công chức thuế mới nhấtvuchinhhp2015
 
Sử dụng modul gia công gỗ TopsolidWood Cam
Sử dụng modul gia công gỗ TopsolidWood CamSử dụng modul gia công gỗ TopsolidWood Cam
Sử dụng modul gia công gỗ TopsolidWood CamTrung tâm Advance Cad
 
Phần mềm KTV - Kiểm tra thép vách
Phần mềm KTV - Kiểm tra thép váchPhần mềm KTV - Kiểm tra thép vách
Phần mềm KTV - Kiểm tra thép váchDaohathiepThiep
 
Phần mềm RCC - Tính toán cốt thép cột
Phần mềm RCC - Tính toán cốt thép cộtPhần mềm RCC - Tính toán cốt thép cột
Phần mềm RCC - Tính toán cốt thép cộtDaohathiepThiep
 
Tra cứu lệnh trong GERBER ACCUMARK PDS
Tra cứu lệnh trong GERBER ACCUMARK PDSTra cứu lệnh trong GERBER ACCUMARK PDS
Tra cứu lệnh trong GERBER ACCUMARK PDSNhân Quả Công Bằng
 
Giao trinh lap trinh tien mastercam x9
Giao trinh lap trinh tien mastercam x9Giao trinh lap trinh tien mastercam x9
Giao trinh lap trinh tien mastercam x9Trung tâm Advance Cad
 
Bai giang etabs
Bai giang etabsBai giang etabs
Bai giang etabsmegachim
 
Bg thud trong xd nguyensonbkpro.blogtiengviet.net
Bg thud trong xd nguyensonbkpro.blogtiengviet.netBg thud trong xd nguyensonbkpro.blogtiengviet.net
Bg thud trong xd nguyensonbkpro.blogtiengviet.netMẫn Thanh
 
WDL - Hướng dẫn sử dụng phần mềm tính toán tải trọng Gió
WDL - Hướng dẫn sử dụng phần mềm tính toán tải trọng GióWDL - Hướng dẫn sử dụng phần mềm tính toán tải trọng Gió
WDL - Hướng dẫn sử dụng phần mềm tính toán tải trọng GióHồ Việt Hùng
 

What's hot (20)

KCS IFDe - Phần mềm triển khai chi tiết Móng đơn
KCS IFDe - Phần mềm triển khai chi tiết Móng đơnKCS IFDe - Phần mềm triển khai chi tiết Móng đơn
KCS IFDe - Phần mềm triển khai chi tiết Móng đơn
 
Thiết kế và gia công trên Mastercam X6
Thiết kế và gia công trên Mastercam X6Thiết kế và gia công trên Mastercam X6
Thiết kế và gia công trên Mastercam X6
 
PBC 2015 Tính toán sức chịu tải của cọc
PBC 2015 Tính toán sức chịu tải của cọcPBC 2015 Tính toán sức chịu tải của cọc
PBC 2015 Tính toán sức chịu tải của cọc
 
Tự học Autocad 2007 full
Tự học Autocad 2007 fullTự học Autocad 2007 full
Tự học Autocad 2007 full
 
Thiết kế và gia công hình học 2D trên Mastercam
Thiết kế và gia công hình học 2D trên MastercamThiết kế và gia công hình học 2D trên Mastercam
Thiết kế và gia công hình học 2D trên Mastercam
 
Chuong 08 menu and toolbar
Chuong 08   menu and toolbarChuong 08   menu and toolbar
Chuong 08 menu and toolbar
 
Phần mềm RCCd - Triển khai chi tiết cột, vách
Phần mềm RCCd - Triển khai chi tiết cột, váchPhần mềm RCCd - Triển khai chi tiết cột, vách
Phần mềm RCCd - Triển khai chi tiết cột, vách
 
đáp án tin học thi công chức thuế mới nhất
đáp án tin học thi công chức thuế mới nhấtđáp án tin học thi công chức thuế mới nhất
đáp án tin học thi công chức thuế mới nhất
 
Sử dụng modul gia công gỗ TopsolidWood Cam
Sử dụng modul gia công gỗ TopsolidWood CamSử dụng modul gia công gỗ TopsolidWood Cam
Sử dụng modul gia công gỗ TopsolidWood Cam
 
Phần mềm KTV - Kiểm tra thép vách
Phần mềm KTV - Kiểm tra thép váchPhần mềm KTV - Kiểm tra thép vách
Phần mềm KTV - Kiểm tra thép vách
 
Phần mềm RCC - Tính toán cốt thép cột
Phần mềm RCC - Tính toán cốt thép cộtPhần mềm RCC - Tính toán cốt thép cột
Phần mềm RCC - Tính toán cốt thép cột
 
Tra cứu lệnh trong GERBER ACCUMARK PDS
Tra cứu lệnh trong GERBER ACCUMARK PDSTra cứu lệnh trong GERBER ACCUMARK PDS
Tra cứu lệnh trong GERBER ACCUMARK PDS
 
Giao trinh lap trinh tien mastercam x9
Giao trinh lap trinh tien mastercam x9Giao trinh lap trinh tien mastercam x9
Giao trinh lap trinh tien mastercam x9
 
Thiết kế nâng cao trên Creo
Thiết kế nâng cao trên CreoThiết kế nâng cao trên Creo
Thiết kế nâng cao trên Creo
 
Bai giang etabs
Bai giang etabsBai giang etabs
Bai giang etabs
 
Huongdan inbang
Huongdan inbangHuongdan inbang
Huongdan inbang
 
Bg thud trong xd nguyensonbkpro.blogtiengviet.net
Bg thud trong xd nguyensonbkpro.blogtiengviet.netBg thud trong xd nguyensonbkpro.blogtiengviet.net
Bg thud trong xd nguyensonbkpro.blogtiengviet.net
 
WDL - Hướng dẫn sử dụng phần mềm tính toán tải trọng Gió
WDL - Hướng dẫn sử dụng phần mềm tính toán tải trọng GióWDL - Hướng dẫn sử dụng phần mềm tính toán tải trọng Gió
WDL - Hướng dẫn sử dụng phần mềm tính toán tải trọng Gió
 
Visual basic 6
Visual basic 6Visual basic 6
Visual basic 6
 
Kynangtinhoc
KynangtinhocKynangtinhoc
Kynangtinhoc
 

Viewers also liked

Skeuomorphism. Realism. Flat
Skeuomorphism. Realism. FlatSkeuomorphism. Realism. Flat
Skeuomorphism. Realism. Flatvolokos
 
Javier Muñoz - Caso de éxito en el uso de RFID y estandarización - EIIA16
Javier Muñoz - Caso de éxito en el uso de RFID y estandarización - EIIA16Javier Muñoz - Caso de éxito en el uso de RFID y estandarización - EIIA16
Javier Muñoz - Caso de éxito en el uso de RFID y estandarización - EIIA16COIICV
 
Historia4 exemple de fonts
Historia4 exemple de fontsHistoria4 exemple de fonts
Historia4 exemple de fontsAlbert Albert
 
Dinosaur Carpaccio - How to implement valuable micro-requirements
Dinosaur Carpaccio - How to implement valuable micro-requirementsDinosaur Carpaccio - How to implement valuable micro-requirements
Dinosaur Carpaccio - How to implement valuable micro-requirementsStefano Leli
 
PROCESO REALIZACIÓN INFOCOMERCIAL AA3
PROCESO REALIZACIÓN INFOCOMERCIAL AA3PROCESO REALIZACIÓN INFOCOMERCIAL AA3
PROCESO REALIZACIÓN INFOCOMERCIAL AA3GEBRAVO
 
Salão de inventores de genebra 2014
Salão de inventores de  genebra   2014  Salão de inventores de  genebra   2014
Salão de inventores de genebra 2014 Edgar Castelo
 
Pencapaian upsr vle kontot
Pencapaian upsr vle kontotPencapaian upsr vle kontot
Pencapaian upsr vle kontotamierulkaramah
 
Pencapaian bahasa inggeris kontot
Pencapaian bahasa inggeris kontotPencapaian bahasa inggeris kontot
Pencapaian bahasa inggeris kontotamierulkaramah
 
Catalogo Herdade do Pinheiro 2012
Catalogo Herdade do Pinheiro 2012Catalogo Herdade do Pinheiro 2012
Catalogo Herdade do Pinheiro 2012Rafael
 
La multi aniiiii
La multi aniiiiiLa multi aniiiii
La multi aniiiiiDana Aanei
 

Viewers also liked (20)

Skeuomorphism. Realism. Flat
Skeuomorphism. Realism. FlatSkeuomorphism. Realism. Flat
Skeuomorphism. Realism. Flat
 
Javier Muñoz - Caso de éxito en el uso de RFID y estandarización - EIIA16
Javier Muñoz - Caso de éxito en el uso de RFID y estandarización - EIIA16Javier Muñoz - Caso de éxito en el uso de RFID y estandarización - EIIA16
Javier Muñoz - Caso de éxito en el uso de RFID y estandarización - EIIA16
 
Historia4 exemple de fonts
Historia4 exemple de fontsHistoria4 exemple de fonts
Historia4 exemple de fonts
 
Dinosaur Carpaccio - How to implement valuable micro-requirements
Dinosaur Carpaccio - How to implement valuable micro-requirementsDinosaur Carpaccio - How to implement valuable micro-requirements
Dinosaur Carpaccio - How to implement valuable micro-requirements
 
Jejak gemilang
Jejak gemilangJejak gemilang
Jejak gemilang
 
PROCESO REALIZACIÓN INFOCOMERCIAL AA3
PROCESO REALIZACIÓN INFOCOMERCIAL AA3PROCESO REALIZACIÓN INFOCOMERCIAL AA3
PROCESO REALIZACIÓN INFOCOMERCIAL AA3
 
Salão de inventores de genebra 2014
Salão de inventores de  genebra   2014  Salão de inventores de  genebra   2014
Salão de inventores de genebra 2014
 
Pencapaian upsr vle kontot
Pencapaian upsr vle kontotPencapaian upsr vle kontot
Pencapaian upsr vle kontot
 
उष्णतेचे परिणाम
उष्णतेचे परिणामउष्णतेचे परिणाम
उष्णतेचे परिणाम
 
Pencapaian bahasa inggeris kontot
Pencapaian bahasa inggeris kontotPencapaian bahasa inggeris kontot
Pencapaian bahasa inggeris kontot
 
Novos sinais
Novos sinaisNovos sinais
Novos sinais
 
Az.dili
Az.diliAz.dili
Az.dili
 
Ch18 insulation coordination
Ch18   insulation coordinationCh18   insulation coordination
Ch18 insulation coordination
 
A grande cavalgada_som (1)
A grande cavalgada_som (1)A grande cavalgada_som (1)
A grande cavalgada_som (1)
 
Catalogo Herdade do Pinheiro 2012
Catalogo Herdade do Pinheiro 2012Catalogo Herdade do Pinheiro 2012
Catalogo Herdade do Pinheiro 2012
 
Clase04 apis-rest
Clase04 apis-restClase04 apis-rest
Clase04 apis-rest
 
Tecla Sala 2n B
Tecla Sala 2n BTecla Sala 2n B
Tecla Sala 2n B
 
Balbastre_PAC2
Balbastre_PAC2Balbastre_PAC2
Balbastre_PAC2
 
La multi aniiiii
La multi aniiiiiLa multi aniiiii
La multi aniiiii
 
Vitoria Eu Comigo
Vitoria Eu ComigoVitoria Eu Comigo
Vitoria Eu Comigo
 

Similar to Mẹo vặt VB

Huong dan ky_nang_su_dung_excel_2003
Huong dan ky_nang_su_dung_excel_2003Huong dan ky_nang_su_dung_excel_2003
Huong dan ky_nang_su_dung_excel_2003Nguyễn Duy Hưng
 
Hdsd phan-mem-quan-ly-doanh-nghiep-biframework-ban-tom-tat
Hdsd phan-mem-quan-ly-doanh-nghiep-biframework-ban-tom-tatHdsd phan-mem-quan-ly-doanh-nghiep-biframework-ban-tom-tat
Hdsd phan-mem-quan-ly-doanh-nghiep-biframework-ban-tom-tatbinhminhie
 
Giaotrinh Win Cc
Giaotrinh Win CcGiaotrinh Win Cc
Giaotrinh Win Cchoadktd
 
huong-dan-hoc.pptx
huong-dan-hoc.pptxhuong-dan-hoc.pptx
huong-dan-hoc.pptxfifihomeless
 
huong-dan-hoc.pptx
huong-dan-hoc.pptxhuong-dan-hoc.pptx
huong-dan-hoc.pptxfifihomeless
 
huong-dan-hoc.pptx
huong-dan-hoc.pptxhuong-dan-hoc.pptx
huong-dan-hoc.pptxfifihomeless
 
Qlns_hdsd
Qlns_hdsdQlns_hdsd
Qlns_hdsdkisshs
 
Xây dựng chương trình quản lý thông tin thư viện cho Trường Tiểu học Lê Văn T...
Xây dựng chương trình quản lý thông tin thư viện cho Trường Tiểu học Lê Văn T...Xây dựng chương trình quản lý thông tin thư viện cho Trường Tiểu học Lê Văn T...
Xây dựng chương trình quản lý thông tin thư viện cho Trường Tiểu học Lê Văn T...Jazmyne Padberg
 
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...Dịch vụ Làm Luận Văn 0936885877
 
TL huong dan su dung MS Excel 2013
TL huong dan su dung MS Excel 2013TL huong dan su dung MS Excel 2013
TL huong dan su dung MS Excel 2013Trinh Hung
 
HUONG DAN SU DUNG SD SSI TRADING.pdf
HUONG DAN SU DUNG SD SSI TRADING.pdfHUONG DAN SU DUNG SD SSI TRADING.pdf
HUONG DAN SU DUNG SD SSI TRADING.pdfNguynPhmTriu1
 
Lý thuyết và thực hành Rhinocecos 5.0
Lý thuyết và thực hành Rhinocecos 5.0Lý thuyết và thực hành Rhinocecos 5.0
Lý thuyết và thực hành Rhinocecos 5.0Trung tâm Advance Cad
 
Sử dụng Microstation v8 căn bản
Sử dụng Microstation v8 căn bảnSử dụng Microstation v8 căn bản
Sử dụng Microstation v8 căn bảnThiều Nem
 

Similar to Mẹo vặt VB (20)

Vb6 16 (4)
Vb6 16 (4)Vb6 16 (4)
Vb6 16 (4)
 
Huong dan ky_nang_su_dung_excel_2003
Huong dan ky_nang_su_dung_excel_2003Huong dan ky_nang_su_dung_excel_2003
Huong dan ky_nang_su_dung_excel_2003
 
Hdsd phan-mem-quan-ly-doanh-nghiep-biframework-ban-tom-tat
Hdsd phan-mem-quan-ly-doanh-nghiep-biframework-ban-tom-tatHdsd phan-mem-quan-ly-doanh-nghiep-biframework-ban-tom-tat
Hdsd phan-mem-quan-ly-doanh-nghiep-biframework-ban-tom-tat
 
User guide website_khds
User guide website_khdsUser guide website_khds
User guide website_khds
 
Bai3 access-form
Bai3 access-formBai3 access-form
Bai3 access-form
 
Đề tài: chương trình quản lý lớp học của trung tâm ngoại ngữ, HAY
Đề tài: chương trình quản lý lớp học của trung tâm ngoại ngữ, HAYĐề tài: chương trình quản lý lớp học của trung tâm ngoại ngữ, HAY
Đề tài: chương trình quản lý lớp học của trung tâm ngoại ngữ, HAY
 
Đề tài: Quản lí các lớp học ngoại ngữ tại trung tâm đào tạo, HAY
Đề tài: Quản lí các lớp học ngoại ngữ tại trung tâm đào tạo, HAYĐề tài: Quản lí các lớp học ngoại ngữ tại trung tâm đào tạo, HAY
Đề tài: Quản lí các lớp học ngoại ngữ tại trung tâm đào tạo, HAY
 
Đề tài chương trình quản lý các lớp ngoại ngữ, HAY
Đề tài  chương trình quản lý các lớp ngoại ngữ, HAYĐề tài  chương trình quản lý các lớp ngoại ngữ, HAY
Đề tài chương trình quản lý các lớp ngoại ngữ, HAY
 
Huong dan su dung nx
Huong dan su dung nxHuong dan su dung nx
Huong dan su dung nx
 
Giaotrinh Win Cc
Giaotrinh Win CcGiaotrinh Win Cc
Giaotrinh Win Cc
 
huong-dan-hoc.pptx
huong-dan-hoc.pptxhuong-dan-hoc.pptx
huong-dan-hoc.pptx
 
huong-dan-hoc.pptx
huong-dan-hoc.pptxhuong-dan-hoc.pptx
huong-dan-hoc.pptx
 
huong-dan-hoc.pptx
huong-dan-hoc.pptxhuong-dan-hoc.pptx
huong-dan-hoc.pptx
 
Qlns_hdsd
Qlns_hdsdQlns_hdsd
Qlns_hdsd
 
Xây dựng chương trình quản lý thông tin thư viện cho Trường Tiểu học Lê Văn T...
Xây dựng chương trình quản lý thông tin thư viện cho Trường Tiểu học Lê Văn T...Xây dựng chương trình quản lý thông tin thư viện cho Trường Tiểu học Lê Văn T...
Xây dựng chương trình quản lý thông tin thư viện cho Trường Tiểu học Lê Văn T...
 
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
 
TL huong dan su dung MS Excel 2013
TL huong dan su dung MS Excel 2013TL huong dan su dung MS Excel 2013
TL huong dan su dung MS Excel 2013
 
HUONG DAN SU DUNG SD SSI TRADING.pdf
HUONG DAN SU DUNG SD SSI TRADING.pdfHUONG DAN SU DUNG SD SSI TRADING.pdf
HUONG DAN SU DUNG SD SSI TRADING.pdf
 
Lý thuyết và thực hành Rhinocecos 5.0
Lý thuyết và thực hành Rhinocecos 5.0Lý thuyết và thực hành Rhinocecos 5.0
Lý thuyết và thực hành Rhinocecos 5.0
 
Sử dụng Microstation v8 căn bản
Sử dụng Microstation v8 căn bảnSử dụng Microstation v8 căn bản
Sử dụng Microstation v8 căn bản
 

Mẹo vặt VB

  • 1.
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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.
  • 6. 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.
  • 7. '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.
  • 8. 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 FileMicrosoft Visual StudioCommonGraphicsIconsDragDrop 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
  • 9. 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
  • 10. 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"
  • 11. 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.
  • 12. 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
  • 13. 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.
  • 14. 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
  • 15. 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()
  • 16. 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
  • 17. 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
  • 18. 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]
  • 19. ' 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
  • 20. ' 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'
  • 21. 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
  • 22. 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á.