You are on page 1of 107

Thit k chng trnh duyt file m thanh

bng Visual Basic


(S dng MediaPlayer 6.x ca Windows)
MediaPlayer ca Windows t version 6.x tr i c th player c rt nhiu dng thc tp tin Multimedia khc nhau nh: .avi, .asf, .asx, .rmi, .wav ; .ra, .ram, .rm, .rmm ; .mpg, .mpeg, .m1v, .mp2, .mpa, .mpe ; .mid, .rmi ; .qt, .aif, .aifc, .aiff, .mov ; .au, .snd ... Cht lng cng c ci thin rt r rt so vi cc phin bn trc. Nu bn ang s dng Windows 98 th MediaPlayer sn sng, nu dng Windows 95, 97 bn buc phi ci t b sung ln i MediaPlayer ca mnh. Bn c th tm b nng cp trn cc CDROM phn mm hay nm chung trong b Internet Explorer 4.01 SP2. Cc file multimedia hin ny trn ngp trn Internet, CDROM, rt nhiu. c bit l MP3 & Midi, 2 loi file ny rt thnh hnh v ang c a chung. Ci g nhiu cng gy nn tng (ni dng hn l sinh tt). Mc d ch cn double click ln file Mp3 hay Midi trong mt trnh qun l file l c th Play c mt cch d dng nh MediaPlayer ca Windows nhng ci g ca ring mnh mi khoi. Chnh v vy trong bi vit ny ti xin mn php hng dn cc bn t thit k mt MediaPlayer rt tin dng v dnh lm ca ring. Tuy nhin ni ca ring khng phi l t lm ht m chng ta phi dng mt bn sao ca MediaPlayer trong chng trnh. Khi qut v chng trnh Chng ta s thit k chong trnh c giao din nh sau:

u tin ngi dngi chn a, th mc c cha cc file Multimedia (th d l file Midi). K n nhn nt Play hoc double click trn tn file cn pht nghe nhc. Ngoi ra cn c cc nt Help, Author, Exit

Pha di l mt MediaPlayer c nhng vo chng trnh, c th iu chnh cc chc nng nh mt chng trnh ring bit (bn c th right click m menu tt quen thuc nh khi dng MediaPlayer), cui ca ca s c dng thng bo tn file & ng dn ang Play.

Cc xc lp trong hp thoi Options ca MediaPlayer Pha di ca hp chn th mc c mt Text box dng lc file. Cc loi file ny ngn cch bi du chm phy ";". Th du nh bn mun lc cc file MP3 & MIDI th g vo: *.mp3;*.mid Cng lu thm l: nu nh trong hp lit k tn file khng c file no, th nt Play b v hiu ho (Enabled=False). Ch khi no c file nt Play mi c tc dng. Thit k giao din Bn hy khi ng Visual Basic v bt tay vo vic to dng cho ng dng ca mnh. Cch b tr cc Control trn form ty theo mi ngi, ring ti, ti trnh by nh sau:

Cc thuc tnh & Caption ca cc Control trong chng trnh:

FORM Form1.caption = "MediaPlayer - Browser" Form1.BorderStyle = 1-Fixed Single Form1.Minbutton=True TEXTBOX/LABELBOX Text1.text="*.mid;*.mp3" Label1.caption="" COMMAND BUTTON cmdPlay.caption="&Play" cmdPlay.enabled=False cmdHelp.caption="&Help" cmdAuthor.caption="&Author" cmdExit.caption="&Exit" Trn thanh Toolbox ca Visual Basic khng c i tng MediaPlayer. Bn phi dng mt Custom Control thm i tng vo. Nhn CTRL - T. Trong hp thoi Components chn Windows MediaPlayer (thng cui danh sch), Click nt OK

i tng MediaPlayer s c thm vo Toolbox, vic cn li, ch cn v n ln form, t v tr thch hp (n c tn mc nhin l MediaPlayer1) Vit Code u tin bn cn cho b 3 control: Drive1, Dir1, File1 hot ng. Hy g on Code sau y cho chng "hiu nhau" Private Sub Dir1_Change() File1.Path = Dir1.Path If File1.ListCount = 0 Then 'Kim tra xem c file no trong listbox File1 cha cmdPlay.Enabled = False 'Nu cha c th v hiu nt Play Else cmdPlay.Enabled = True 'Nu c ri th cho hiu lc nt Play End If End Sub

Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Double click ln nt Play v vit Private Sub Command1_Click() MediaPlayer1.filename = Dir1.Path & "\" _ & File1.List(File1.ListIndex) Label1.Caption = MediaPlayer1.filename End Sub Nu thuc tnh AutoStart ca MediaPlayer c gn bng True. MediaPlayer s t ng Play nu bn truyn cho thuc tnh FileName ca n mt chui l ng dn n file cn Play. Khi thuc tnh FileName l rng, n s ngng. on Code trn ti ghp ni cc thuc tnh ca Drive1, Dir1 & File1 ch ra file cn Play. on code s gp li khi cc file cn Play nm ngoi th mc gc, bn hy t hon chnh ly bng hm IIF() hay cu lnh IF Dng th 2 dng hin th ng dn file ang Play trong Labelbox cui form. Nu mun khi ngi dng Double Click ln tn file trong danh sch file th MediaPlayer s Play file , bn ch cn lm nh sau: Private Sub File1_DblClick() cmdPlay_Click End Sub kh nng lc (Pattern) ca File1 hot ng theo ni dung trong Textbox (Text1). Bn cn gn cc chui trong Textbox do ngi dng g vo mi khi c s thay i (thuc tnh Change ca Textbox). Private Sub Text1_Change() File1.Pattern = Trim(Text1) End Sub ng thi lc chng trnh khi ng bn cng phi gn ni dung trong Textbox cho thuc tnh Pattern ca File1 Private Sub Form_Load()

Text1_Change End Sub MediaPlayer cn c mt thuc tnh tn l PlayCount - S ln pht li mt file nhc, bn hy gn cho n mt s thch hp trong khi thit k chng trnh. Kh nng ca MediaPlayer cn ty thuc vo MediaPlayer ang s dng trong Windows ca bn. Vy l xong, mt chng trnh dut file m thanh, tht l qu n gin phi khng bn :-) Thay li kt By gi bn c th dch ra file exe, em tng cho bn b "lm k nim". Nh chp thm cc file cn thit cho chng trnh nh. MSDXM.OCX l file cha Custom Control MediaPlayer s dng trong chng trnh. Hy nn li cho chng tht mi nhon trc khi chp ra a mm hay gi km theo E-mail. Trn y ch l mt chng trnh rt n gin, nhng tnh nng c n th ng khm phc phi khng bn. Cn li vi chi tit khc bn c th t mnh lm ly theo thch. Bn c th thm vi tnh nng na cho chng trnh tr nn a dng, th d nh: Play cc file Video, t ng Play mt lot cc file... Chc bn thnh cng.

Vit ng dng
INDEXER
[ Thit k giao din ] [ Vit Code ] Vit chng trnh to trang Web cha cc Link n cc tp tin trong mt th mc c ngi dng ch nh. Chng trnh ny c cc chc nng v hot ng tng qut nh sau: Chn th mc Lc file Cho ngi dng chn file

t tn tiu cho trang Web t dng vn bn u danh sch t dng vn bn cui danh sch Sau khi to xong cho php xem bng IE hay Notepad Chn canh l: Tri, phi , gia.

Khi bn nhn nt "To" trong Form chnh (Form1) chng trnh s to mt trang Web cha cc link n cc file trong th mc, trang Web ny c lu vo cng th mc m bn ch nh. Mi ln ngi dng ch nh th mc, chng trnh s t ng in ng dn v tn file (mc nhin l List_index.htm) vo hp chn file name (Text1) d dng trong vic chn la ta dng thm mt ListBox (List1) th cho FileListBox (File1). Bn nn cho ListBox nm ln i tng File1 (hoc cho File1.Visible=False) v ta ch cn File1 ly tn cc tp tin Add vo List1 ch khng dng n.

Mt ComboBox (Combo1) lc file theo tng loi file hoc tt c (do ngi dng t chn hay g vo). ng thi cung cp thm cc nt lnh: "Chn" chn tt c cc tp tin trong Listbox, "Khng" b chn tt c cc tp tin trong Listbox (bn cng c th chn bng cch Check vo tng tn file tng ng), "To" nhn nt ny bt u to trang Web, "Thng s" nhn nt ny xc lp thm cc ty chn cho trang Web, "Thot" Thot khi chng trnh.

Vit Code cho menu Ta ch cn vit code cho menu, sau dng cc nt lnh gi menu tng ng. By gi chng ta vit code cho mc Windows Explorer trong menu Windows. Vo Windows chn Windows Explorer vit code cho mc chn menu ny.

Bn g vo on sau: Private Sub mnuWE_Click() ' dng ny c sn Dim P P = Shell("explorer", vbNormalFocus) End Sub ' dng ny c sn Gii thch: * Dim P Khai bo 1 bin kiu variant cha tr tr v ca hm Shell. y l kiu d liu bao trm tt c cc kiu d liu trong Visual Basic. * P=Shell("explorer",vbNormalFocus) Hm Shell dng gi mt chng trnh khc thi hnh C php Shell(pathname[,windowstyle]) pathname: l ng dn v file thc thi ca chng trnh cn gi. y l 1 xu cho nn khi vit bn phi t chng trong cp du " " mi ng. windowstyle: l hng s qui nh phong cch khi khi ng ca chng trnh cn chy. Th d: sau khi gi chng trnh bn cn Maximize, Minimize chng trnh ... cc hng c gi tr v ngha nh sau:

Tn hng vbHide vbNormalFocus vbMinimizedFocus vbMaximizedFocus vbNormalNoFocus vbMinimizedNoFocus

Gi tr 0 1 2 3 4 5

ngha Window is hidden and focus is passed to the hidden window. Window has focus and is restored to its original size and position. Window is displayed as an icon with focus. Window is maximized with focus. Window is restored to its most recent size and position. The currently active window remains active. Window is displayed as an icon. The currently active window remains active.

Vy c th vit li hm Shell nh sau Shell("explorer",1) cho gn Lu : Trong phn pathname ca hm shell l ra phi ghi y ng dn, th d "C:\Windows\Explorer.exe" (gi s th mc windows l c:\windows) thay v "explorer.exe". S d ta c th ghi gn nh vy l v Windows t ng t dng dn path n cc th mc nh: Windows; Windows\system. Do ch cn ghi explorer.exe cho tng qut (khi s sai ng dn khi em chy trn my khc). By gi nhn F5 chy chng trnh, vo menu Windows chn Windows Explorer, lp tc chng trnh Windows Explorer c khi ng. Tng t nh vy bn c vit code cho tt c cc menu con cn li ca menu Windows. Notepad.exe (Windows/Notepad) Write.exe (Windows/WordPad) Pbrush.exe (Windows/Paint) i vi Paint v WordPad ta phi dng 2 file write.exe & pbrush.exe trong th mc Windows khi ng. Thc ra 2 file ny ch c chc nng gi WordPad.exe v MSPaint.exe (trong th mc \Program Files\Accessories\) ch khng phi l file chng trnh chnh. Microsoft phi lm vy tng thch vi cc chng trnh c. Cn cc mc chn khc bn cng vit hm Shell tng t nhng ng dn phi c th v chnh xc. Th d vit code cho menu "Lac Viet td". Vo VietNamese / Lac Viet td, g vo Private Sub mnuLV_Click() Dim F F=Shell("d:\tools\lvtd\lvtd.exe",1) End Sub Do file lvtd.exe ca my ti nm trong th mc d:\tools\lvtd Nhn F5 chy th xem c va hay khng ?

Vit code cho cc Command Button By gi ta vit lnh cho cc CommandButton tng ng. Yu cu l vit code sao cho khi nhn vo nt Windows th menu Windows tng ng s hin ra nh hnh minh ha Vy phi vit lnh cho nt + Windows (cmdWin) gi menu Windows (mnuWin) + Application (cmdApp) ---> mnuApp + VietNamese (cmdVN) ---> mnuVN Double click vo cmdWin (hay Right click chn View code t menu popup), g vo Private Sub cmdWin_Click() popupmenu mnuWin End Sub Gii thch: popupmenu mnuWin hnh vi (method) popupmenu dng hin th menu c tn mnuWin Xem c php popupmenu Tng t cho 2 nt lnh cn li. Khi chy th chng trnh bn click vo nt lnh no s xut hin menu tng ng. T y ngi dng c th chn lnh t menu popup hay menu pulldown (menu ko xung) u c. Vit lnh cho nt Exit nh sau: Private Sub cmdExit_Click() End End Sub Lm cho chng trnh t ng thot i tng Timer Nu ang ch ng t ng thot (mc Unload after 20 Sec c chn) sau 20 giy chng trnh s t ng thot, khng cn chng ta can thip. lm c vic ny ta phi dng Timer v Picture box (picIns, picOut) to t trc.

Sau khi chng trnh khi ng hoc khi check vo checkbox. Mi giy rng hin ti ca picIns cng vi rng ca picOut/20 (v 20 giy), cho n khi rng ca picIns = picOut th dng chng trnh. Nu khng check chc nng t ng thot khng hot ng.

Chng ta tin hnh vit code cho cc i tng nh sau Tnh hung Form_Load() s c kch hot khi chng trnh khi ng, timer hot ng vi tr interval = 1000 (tng ng 1 giy), rng picIns ban u l 0. Private Sub Form_Load() Timer1.Interval = 1000 PicIns.Width = 0 End Sub Khi ngi dng Click vo check box. Nu c chn s lm cho timer hot ng tng t nh Form_Load(), nu khng chn th cho timer ngng. Private Sub chkUnload_Click() If chkUnload.Value = 1 Then PicIns.Visible = True Timer1.Interval = 1000 Else Timer1.Interval = 0 PicIns.Visible = False End If PicIns.Width = 0 End Sub Kim tra xem rng picIns >= picOut hay khng. Nu c, kt thc chng trnh (End), nu khng tip tc tng rng picIns theo chu k mi giy 1 ln. Private Sub Timer1_Timer() If PicIns.Width >= PicOut.Width Then End Else PicIns.Width = PicIns.Width + PicOut.Width / 20 End If End Sub Chy th chng trnh xem n c t ng thot khng. Th click vo check box xem c hot ng nh mong mun cha. T son im phn Thm vi li nhc nh Chng ta cn st 1 i tng l lblMsg (Label box) cha s dng n. Label box ny ta dng in cu thng bo hng dn mi khi ngi dng r Mouse qua cc Command Button.

Th d nh: Khi r mouse trn nt Windows th cu thng bo s l "Cc ng dng chun ca Windows" chng hn. lm c iu ny ta hy kho st tnh hung MouseMove ca i tng, c th l ca Command Button v Form. Right click vo nt Windows, chn View code, chn tnh hung MouseMove. Private Sub cmdWin_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMsg.Caption = "Run Windows Utilities (Accessories group)" End Sub Hin th cu thng bo Run Windows Utilities (Accessories group) trong lblMsg khi mouse di chuyn trn nt Windows. Mt cch tng t bn c th lm cho cc button cn li. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMsg.Caption = "Please, select a program to start your work." End Sub Hin th cu thng bo Please, select a program to start your work. trong lblMsg khi mouse di chuyn pha trn form Khi chy chng trnh, bn th r mouse ln cc button s thy ni dung ca lblMsg thay i lin tc (hin th cc cu thng bo ca chnh bn). Lm sao form khi ng gia mn hnh i vi Visual Basic version 5 & 6, th chuyn ny rt d nhng c v b him. Bn ch cn right click ln ca s Form Layout (nu cha hin th hy bt ln bng cch View\Form Layout Window) chn Startup Position, chn Center Screen l xong ngay.

Khng nhng th, bn cn c th t hiu chnh v tr form s hin th trn mn hnh khi chy mt cch rt trc quan. Cn nu bn khoi th cng, hy thm dng lnh ny vo tnh hung FormLoad ca form cn canh gia mn hnh nh sau. Private Sub Form_Load() Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 End Sub Cch ny p dng cho mi phin bn ca Visual Basic. Cui cng bn ch dch ra file EXE chy. Chc bn thnh cng !

Lp trnh vi hm API bng Visual Basic & Delphi


Bn c th thc hin cc chc nng vi mt ca s nh Phng to, Thu nh, Gi xung Taskbar, Di chuyn, Chnh kch thc hoc bt nt Start ca Windows hay t ch Standby, chy Screen Saver thm ch tt mn hnh my tnh ca mnh bng cch gi hm API. Chng trnh VB di y m phng nhng vic ny. Bn thit k giao din v cc i tng nh hnh di y

Caption Standby Start Minimize Maximize Move Size Close

Name cmdStandby cmdStart cmdMinimize cmdMaximize cmdMove cmdSize cmdClose

Copy on code ny v dn vo chng trnh ca bn Private Private Private Private Private Private Private Private Const Const Const Const Const Const Const Const WM_SYSCOMMAND = &H112 SC_SCREENSAVE = &HF140& SC_MINIMIZE = &HF020& SC_MAXIMIZE = &HF030& SC_RESTORE = &HF120& SC_TASKLIST = &HF130& SC_MOVE = &HF010& SC_SIZE = &HF000&

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)

As Long Dim WDMax As Boolean Private Sub cmdMinimize_Click() SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0 End Sub Private Sub cmdMaximize_Click() If WDMax = True Then SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_RESTORE, 0 WDMax = False Else SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0 WDMax = True End If End Sub Private Sub CmdClose_Click() End End Sub Private Sub cmdMove_Click() SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0 End Sub Private Sub cmdSize_Click() SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_SIZE, 0 End Sub Private Sub cmdStandby_Click() SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, 20 End Sub Private Sub CmdStart_Click() ' Start menu SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_TASKLIST, 0 End Sub o=========)================ END ===============================> Vi chng trnh ny bn c th lm c nhiu vic kh th v, nhng tic l ti khng tm ra cch tt mn hnh v gi trnh bo v mn hnh (Screen Saver) bng VB, do ti s dng Borland Delphi 6.0 thc hin. Di y l on code bng Delphi c th tt mn hnh v chy Screen Saver. Nu c th bn nn vit chng trnh c chc nng t biu tng vo Systray, sau bt mt Popup menu chn cc chc nng nh ng m CD-ROM, Tt mn hnh, Chy Screen Saver.... qu l mt chng trnh c ch. Delphi

Bn t thit k giao din, v trn bn t 2 Button vi Name l Button1 v Button2, Caption tu , sau click p vo mt Button hin ra ca s son tho v g on lnh sau vo. procedure TForm1.Button1Click(Sender: TObject); begin SendMessage(application.Handle,WM_syscommand,SC_MonitorPower,1); {bn c thy s 1 gn cui dng lnh trn khng ? n c ngha l Tt mn hnh, bn thay bng s 0 (khng) th s chuyn v ch Text } end; procedure TForm1.Button2Click(Sender: TObject); begin {Tng t nh trn} {1: Standby} {0: Screen Save (ch c hiu lc khi bn ang s dng 1 trnh Screen Saver)} SendMessage(application.Handle,WM_syscommand,SC_ScreenSave,0);

T to chng trnh nghe nhc bng VB 6.0


Cc iu khin ca VB tht di do, v vn lin tc pht trin, iu ny gip cho ngi lp trnh nhanh chng cho ra l mt sn phm khng n ni no, m ch trong mt thi gian rt ngn. Bi vit ny trnh by v chng trnh nghe nhc s (MP3,WAV,MID) s dng iu khin Windows Media Player, chng trnh c kh nng pht tun t tng bi trong danh sch, save danh sch bi ht vo mt file, cho php Browse chn cc bi ht v thm vo danh sch, c chc nng ghi cc thng tin cu hnh vo Registry lu gi, khi chy chim rt t ti nguyn h thng, khi ng tc th. Giao din n gin d s dng, c cc chc nng ti thiu ca mt trnh nghe nhc, c m ngun hon chnh i km Chng trnh ny s dng file danh sch l mt file kiu bn ghi, iu ny c li th l truy xut nhanh, thm xo sa cng d dng hn, nhng b li kch thc file kh ln. Vi chng trnh ny bn s hu trong tay mt my nghe nhc, v vi mt cht kin thc lp trnh bn c th lm cho giao din cng nh hot ng ca n chuyn nghip hn, chng trnh cn nhiu hn ch, ti rt mong cc bn ci tin cho n mnh hn na. Giao din chng trnh

M ngun ca chng trnh. Ti khng lit k thuc tnh ca cc control c s dng trong chng trnh v c m ngun hon chnh i km, bn ch vic download project ny v cng, gii nn v m n bng Visual Basic l xong. Ti s dng Visual Basic 6.0, Windows 98 SE, nu bn dng cc phin bn c hn c th chng trnh khng chy. 1. To mt Project mi Thm vo Project mt Modul vi tn l Modul1 - Ni dung: Option Explicit 'Kiu bn ghi ca file danh sch, ch gm 2 trng Type Media Path As String * 250 Name As String * 100 'Tn file bi ht khng di qu 250 k t 'ng dn khng di qu 100 k t End Type 2. t tn cho Form hin hnh l frmMedia - Ni dung: Dim Song As Media Dim DATAfile As String Dim RecEnd

Dim i, Filenum, Sogia As Integer Dim p 'Hm kim tra s tn ti ca 1 file Function FileExists(FileName) As Boolean Dim Msg As String On Error GoTo CheckError FileExists = (Dir(FileName) <> "") Exit Function CheckError: Const mnErrDiskNotReady = 71, mnErrDeviceUnavailable = 68 If (Err.Number = mnErrDiskNotReady) Then Msg = "Put a floppy disk in the drive." If MsgBox(Msg, vbExclamation & vbOKCancel) = vbOK Then Resume Else Resume Next End If ElseIf Err.Number = mnErrDeviceUnavailable Then Msg = "This drive or path does not exist: " & FileName MsgBox Msg, vbExclamation Resume Next Else Msg = "Unexpected error #" & Str(Err.Number) & " occurred: " _ & Err.Description MsgBox Msg, vbCritical Stop End If Resume End Function Private Sub cmdCapNhat_Click() Capnhat End Sub Private Sub Command1_Click() PopupMenu mnuSetting End Sub Private Sub Capnhat() Filenum = FreeFile Open DATAfile For Random As #Filenum Len = Len(Song) RecEnd = FileLen(DATAfile) / Len(Song) For i = 1 To RecEnd Get #Filenum, i, Song List1.AddItem (Trim(Song.Name)) List2.AddItem (Trim(Song.Path)) Next i Close #Filenum End Sub Private Sub Form_Load() Volume1.Value = 10 'Gi tr mc nh ca Volume khi khi ng

'M file danh sch If Len(App.Path) > 3 Then DATAfile = App.Path & "\TMedia.lst" Else DATAfile = App.Path & "TMedia.lst" End If mnuRepeat.Checked = True mnuMini.Checked = False On Error Resume Next mnuMini.Checked = GetSetting("FastRun 1.0", "Media", "Check Mini") mnuRepeat.Checked = GetSetting("FastRun 1.0", "Media", "Check Repeat") frmMedia.Top = GetSetting("FastRun 1.0", "Media", "Media Top") frmMedia.Left = GetSetting("FastRun 1.0", "Media", "Media Left") List1.BackColor = GetSetting("FastRun 1.0", "Media", "Back Color") List1.ForeColor = GetSetting("FastRun 1.0", "Media", "Text Color") mnuDam.Checked = GetSetting("FastRun 1.0", "Media", "Font Bold") Hengio = GetSetting("FastRun 1.0", "Media", "Time Song") Volume1.Value = GetSetting("FastRun 1.0", "Media", "Volume") CheckDefaultList = GetSetting("FastRun 1.0", "Media", "DefaultList") Capnhat Mini Dam Volume1_Scroll End Sub Private Sub SaveReg() 'Ghi cu hnh vo Registry On Error Resume Next SaveSetting "FastRun 1.0", "Media", "Check Mini", mnuMini.Checked SaveSetting "FastRun 1.0", "Media", "Check Repeat", mnuRepeat.Checked SaveSetting "FastRun 1.0", "Media", "Media Top", frmMedia.Top SaveSetting "FastRun 1.0", "Media", "Media Left", frmMedia.Left SaveSetting "FastRun 1.0", "Media", "Volume", Volume1.Value SaveSetting "FastRun 1.0", "Media", "Font Bold", mnuDam.Checked SaveSetting "FastRun 1.0", "Media", "Back Color", List1.BackColor SaveSetting "FastRun 1.0", "Media", "Text Color", List1.ForeColor DeleteSetting "FastRun 1.0", "Media", "Time Song" End Sub Private Sub KetThuc() SaveReg Unload frmMedia Unload frmAuthor Unload frmOpen End Sub Private Sub Form_Unload(Cancel As Integer) KetThuc End Sub Private Sub List1_DblClick() If FileExists(List2.List(List1.ListIndex)) = True Then

MediaPlayer1.FileName = List2.List(List1.ListIndex) ThanhCong = True Else If List1.ListIndex = List1.ListCount - 1 And ThanhCong = False Then MsgBox "Tt c cc bi trong danh sch u sai ng dn hoc tn file." + vbCrLf + "Bn cn np li danh sch !", vbCritical, "Media - Warning" Else HetBai End If End If End Sub

Private Sub HetBai() If mnuRepeat.Checked = True And List1.ListCount > 0 Then If List1.ListIndex + 1 < List1.ListCount Then List1.ListIndex = List1.ListIndex + 1 Else List1.ListIndex = 0 ThanhCong = False End If On Error Resume Next List1_DblClick End If End Sub Private Sub List1_KeyPress(KeyAscii As Integer) If Keyascii = 13 Then List1_DblClick End End End Sub Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If List1.ListIndex >= 0 Then List1.ToolTipText = Left(List1.List(List1.ListIndex), Len(List1.List(List1.ListIndex)) 3) End If End Sub Private Sub MediaPlayer1_EndOfStream(ByVal Result As Long) 'Hnh ng khi ht mt bi HetBai End Sub Private Sub mnuAdd_Click() frmOpen.Show vbModal End Sub Private Sub mnuAuthor_Click() frmAuthor.Show End Sub

Private Sub mnuDelete_Click() frmListEdit.Show End Sub Private Sub mnuChu_Click() CommonDialog1.Color = List1.ForeColor CommonDialog1.Action = 3 List1.ForeColor = CommonDialog1.Color End Sub Private Sub mnuDam_Click() If mnuDam.Checked = False Then List1.FontBold = False mnuDam.Checked = True Else List1.FontBold = True mnuDam.Checked = False End If Dam End Sub Private Sub Dam() If mnuDam.Checked = False Then List1.FontBold = False Else List1.FontBold = True End If End Sub Private Sub mnuExit_Click() KetThuc End Sub Private Sub mnuMini_Click() If mnuMini.Checked = True Then mnuMini.Checked = False Else mnuMini.Checked = True End If Mini End Sub Private Sub Mini() If mnuMini.Checked = True Then List1.Height = 255 frmMedia.Height = 1740 List1.ListIndex = List1.ListIndex Else List1.Height = 2400 frmMedia.Height = 3885 End If End Sub

Private Sub mnuNumber_Click() If mnuNumber.Checked = True Then mnuNumber.Checked = False Else mnuNumber.Checked = True End If End Sub Private Sub mnuNen_Click() CommonDialog1.Color = List1.BackColor CommonDialog1.Action = 3 List1.BackColor = CommonDialog1.Color End Sub Private Sub mnuRepeat_Click() If mnuRepeat.Checked = True Then mnuRepeat.Checked = False Else mnuRepeat.Checked = True End If End Sub Private Sub Text1_Click() Text1.Text = Str(MediaPlayer1.Volume) End Sub Private Sub Volume1_Scroll() Select Case Volume1.Value Case 13: Sogia = 0 Case 12: Sogia = -40 Case 11: Sogia = -90 Case 10: Sogia = -180 Case 9: Sogia = -280 Case 8: Sogia = -410 Case 7: Sogia = -500 Case 6: Sogia = -650 Case 5: Sogia = -860 Case 4: Sogia = -1100 Case 3: Sogia = -1350 Case 2: Sogia = -1900 Case 1: Sogia = -2600 Case 0: Sogia = -9640 End Select MediaPlayer1.Volume = Sogia End Sub 3. To mt form mi t tn l frmOpen -Ni dung: Option Explicit Dim SongOpen As Media

Dim Dim Dim Dim

i, CurrentSong, Filenum As Integer PathSong As String DATAfile As String RecEnd

Function FileExists(FileName) As Boolean Dim Msg As String On Error GoTo CheckError FileExists = (Dir(FileName) <> "") Exit Function CheckError: Const mnErrDiskNotReady = 71, mnErrDeviceUnavailable = 68 If (Err.Number = mnErrDiskNotReady) Then Msg = "Put a floppy disk in the drive." If MsgBox(Msg, vbExclamation & vbOKCancel) = vbOK Then Resume Else Resume Next End If Else If Err.Number = mnErrDeviceUnavailable Then Msg = "This drive or path does not exist: " & FileName MsgBox Msg, vbExclamation Resume Next Else Msg = "Unexpected error #" & Str(Err.Number) & " occurred: " _ & Err.Description MsgBox Msg, vbCritical Stop End If Resume End Function Private Sub cmdAddAll_Click() If Len(Dir1.Path) = 3 Then PathSong = Dir1.Path Else PathSong = Dir1.Path + "\" End If For i = 0 To File1.ListCount - 1 List1.AddItem (File1.List(i)) List2.AddItem (PathSong + File1.List(i)) Next i If cmdClear.Enabled = False Then cmdClear.Enabled = True End If KTnutClear End Sub Private Sub cmdCancel_Click() Unload frmOpen End Sub Private Sub cmdClear_Click()

KTnutClear If cmdClear.Enabled = True Then If List1.ListIndex < 0 And List1.ListCount > 0 Then List1.ListIndex = 0 End If CurrentSong = List1.ListIndex List1.RemoveItem (CurrentSong) List2.RemoveItem (CurrentSong) If List1.ListCount < 0 Then List1.ListIndex = List1.ListCount - 1 End If If List1.ListCount = 0 Then cmdClear.Enabled = False End If End If End Sub Private Sub cmdClearAll_Click() KTnutClear If cmdClearAll.Enabled = True Then List1.Clear List2.Clear End If End Sub Private Sub cmdOK_Click() 'save in file If Len(App.Path) > 3 Then DATAfile = App.Path + "\TMedia.lst" Else DATAfile = App.Path + "TMedia.lst" End If If FileExists(DATAfile) = True Then Kill DATAfile End If frmMedia.List1.Clear frmMedia.List2.Clear If List1.ListCount > 0 Then Filenum = FreeFile Open DATAfile For Random As #Filenum Len = Len(SongOpen) If List1.ListCount > 0 Then For i = 0 To List1.ListCount - 1 SongOpen.Name = List1.List(i) SongOpen.Path = List2.List(i) Put #Filenum, i + 1, SongOpen Next i End If Close #Filenum frmMedia.cmdCapNhat.Value = True End If Unload frmOpen frmMedia.SetFocus End Sub

Private Sub Combo1_Click() File1.Pattern = Combo1.Text If Combo1.ListIndex = 1 Then cmdAddAll.Enabled = False MsgBox "Nu bn chn kiu file l '' *.* '', bn s khng thm c file vo danh sch", vbCritical, "Warning" Else cmdAddAll.Enabled = True End If End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path KTnutAddAll End Sub Private Sub Dir1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Dir1.Path = Dir1.List(Dir1.ListIndex) 'File1_DblClick End If End Sub Private Sub Drive1_Change() On Error Resume Next Dir1.Path = Drive1.Drive If Err Then MsgBox "Khng tm thy a", vbCritical, "Media - Warning" Drive1.Drive = Dir1.Path End If End Sub Private Sub File1_DblClick() If File1.Pattern <> "*.*" Then If Len(Dir1.Path) = 3 Then PathSong = Dir1.Path + File1.FileName Else PathSong = Dir1.Path + "\" + File1.FileName End If List1.AddItem (File1.FileName) List2.AddItem (PathSong) If cmdClear.Enabled = False Then cmdClear.Enabled = True End If KTnutClear Else MsgBox "Bn cn t kiu file trong hp Pattern l ''*.mp3;*.wav;*.mid''", vbCritical, "Media - Warning" End If End Sub

Private Sub File1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then File1_DblClick End If End Sub Private Sub Form_Load() For i = 0 To frmMedia.List1.ListCount - 1 List1.AddItem (frmMedia.List1.List(i)) List2.AddItem (frmMedia.List2.List(i)) Next i KTnutAddAll KTnutClear Combo1.ListIndex = 0 File1.Pattern = Combo1.Text File1.Hidden = True File1.ReadOnly = True File1.System = True End Sub Private Sub KTnutAddAll() If File1.ListCount > 0 And File1.Pattern <> "*.*" Then cmdAddAll.Enabled = True Else cmdAddAll.Enabled = False End If End Sub Private Sub KTnutClear() If List1.ListCount > 0 Then cmdClear.Enabled = True cmdClearAll.Enabled = True Else cmdClear.Enabled = False cmdClearAll.Enabled = False End If End Sub

4.To thm mt form t tn l frmAuthor -Ni dung: y l form ghi thng tin v tc gi chng trnh, tu bn

S dng Visual Data Manager ca Visual Basic 5.0


Khi s dng Visual Basic (VBasic), iu khin bn hi lng c l l s lng " ngh" di do ca n trong Tool Box. Bn ang thit k mt form cho ng dng c x l n c s d liu v

ang phn vn s t vo y Data control hay DBGrid? Cha ht, bn cn nhng thao tc no trn form quyt nh s c bao nhiu nt lnh? Mun c nhiu thao tc, t phi cn cng nhiu nt lnh m vic lp trnh cho cc nt lnh c khi khng n gin. VBasic c tin ch h tr trong trng hp bn cn mt form c kh nng duyt tng record trong mt Table cng vi nhng thao tc thm, xa, sa, di chuyn, d tm v xp th t. D nhin, tin ch y cng t ng pht sinh m lnh cho cc thao tc. l trnh Data Manager vn c xem l "tr gi gia tng" c sn trong VBasic 4.0. Nhng k t phin bn VBasic 5.0, trnh tin ch y c "lt xc" hon ton v gi bng tn mi l Visual Data Manager (VisData). Vi chc nng ni trn, tin ch ny khc vi h Microsoft Access ch n cho php bn to bt c CSDL no: Access, dBase, FoxPro hay Paradox. V v l trnh qun tr d liu nn VisData sn lng chp nhn nhng ch th SQL nu bn mun c cc queries trong CSDL. Nu vn cha phi l l do bn s dng VisData, th hy tng tng bn ang vit mt ng dng bng VBasic, nhng cng cn n nhng thng tin v mt CSDL no bng cch s dng MS-Access ch Inactive Window, bn c tin rng tc my ca bn s chm li khng? V nu VBasic ca bn cng ang cn n CSDL m MS-Access ang m th sao? Hn bn phi ng CSDL trong MS-Access. Duy tr mt ca s MS-Access trng rng trong ch Inactive l mt s ph phm ti nguyn ca my v thi gian ca bn. Bn c sn lng "xi sang" nhng th khng? VisData cn c nhng chc nng lin quan n vic s dng CSDL phn tn. Ngha l mt CSDL dng trong mi trng mng. Tuy nhin trong bi ny, chng ta ch xt n nhng chc nng ca n trn my n. Gi s dng VisData T trong menu chnh ca VBasic, bn c th gi s dng VisData bng lnh: Add-Ins, Visual Data Manager. Cy lnh m t qua Hnh 1.

Hnh 1. Lnh gi VisData Sau ca s VisData xut hin trn mt trc ca ca s VBasic nh Hnh 2.

Hnh 2. Ca s VisData Menu v thanh cng c ca VisData tng i n gin. Menu File gm nhng lnh lin quan n m/to lp, bo tr CSDL. Menu Utilities phn nh hai tin ch quan trng l trnh Query Builder gip xy dng SQL trc quan v b Data Form Designer gip t ng to form nu bn ang dng VBasic v mun VisData h tr to form x l d liu trong table. Cc nt cng c chia thnh ba nhm. Nhm th nht gip ngi s dng xc nh xem mnh s m/to mt CSDL theo kiu no trong nhng kiu Tableset, Dynaset, hay Snapshot. Nhm nt cng c th hai c dng khi bn mun to mt form v trong form s t mt Data control hay DBGrid control. Nhm nt cng c th ba dnh cho nhng trng hp dng n CSDL phn tn. Trong VisData c th hin th hai ca s Database Windows v SQL Statement. M/To lp CSDL i vi mt CSDL c sn, trc khi m bn hy xc nh VisData s m n theo kiu no trong nhng kiu Tableset, Dynaset, hay Snapshot. Nhng nt cng c cho trong Hnh 3 cho bit nt no gip bn lm vic . Bn s dng lnh File.Open Database m CSDL hay lnh File.New nu mun to mt CSDL mi.

Hnh 3. Quy nh kiu CSDL s m Hnh 4 m t cy lnh cho thao tc ny.

Hnh 4. Cy lnh m/to CSDL Trng hp mun to CSDL FoxPro, bn phi khai bo ng dn cho CSDL s to trong hp thoi nh VisData trnh by Hnh 5.

Hnh 5. Khai bo ng dn khi to CSDL FoxPro Nu mun to CSDL .MDB ca MS-Access, bn s khai bo tn ca CSDL trong hp thoi nh Hnh 6.

Hnh 6. To CSDL .MDB ca MS-Access Gi s bn mun to mt CSDL di format ca Access 7.0 c tn magazin.mdb trong a D:\, lc vng lm vic ca VisData s c hai ca s Database Window v SQL Statement. Ca s Database Window l ni th hin v cc properties ca bn thn CSDL ny v ca nhng i tng trong CSDL nh Table, Query, ... Nhng properties ny c th hin di dng cy th mc. Ca s SQL Statement l ni pht nhng ch th SQL vi nhng nt lnh Execute thi hnh ch th, nt lnh Clear xa ch th v nt lnh Save lu ch th SQL hin hnh di mt tn, tn c gi l QueryDef. Hnh 7 minh ha nhng m t trn.

Hnh 7. Ca s Database v SQL Statement To mt Table Bn c th to mt table bng lnh SQL pht ra trong ca s SQL Statement theo dng lnh: CREATE TABLE Table (Field1, Type(Size),...) v sau bm vo nt lnh Execute thi hnh. V d mun to Table Writer cho CSDL magazin.mdb, bn c th nhp vo dng lnh: Create Table Writer (writerid Text(5), Name Text(25), Title Text(32), ReceiveDate Date time) By gi trn mn hnh s hi bn y c phi l mt ch th PassThrough SQL khng, bn nh tr li "No" v mt ch th PassThrough SQL s dnh ring cho ODBC x l. y chng ta cha bn n ODBC l g. Vi mt table va khai bo xong, bn c mun xem nhng properties ca bng ny? Hy bm vo du A+' k bn tn ca bng trong ca s Database Window. Bn mun nhp liu vo bng? Hy nhn p vo tn ca bng. Lc mt b duyt ni dung s th hin di dng form nh trong Hnh 8.

Hnh 8. Form nhp liu v duyt bng Writer Cc nt lnh lin quan n nhng thao tc trn record; cc hp Text box nhp ni dung cho tng trng v thanh trt duyt ni dung tng record.

Xin lu ty bn ang m bng theo kiu no trong nhng kiu TableSet, DynaSet hay SnapShot v c t Data Control vo form hay khng m hnh thc ca form nhp liu c thay i i cht v cc nt lnh trong form. Nhng iu s khng lm bn lng tng khi s dng form. Di y, chng ti s m t i nt v vic s dng form trong trng hp m bng theo kiu DynaSet v trong form khng c Data Control. S dng form nhp liu Sau khi lm xut hin form nhp liu nh Hnh 8, hn bn cng mun nhp mt s record u tin cho bng. Form khng cho php bn nhp ni dung cc trng vo hp text box. Bn hy bm chut vo nt lnh Add bt u. Hnh 9 minh ha form nhp liu.

Hnh 9. Nhp ni dung record Khi nhp xong, bn bm chut vo nt lnh Update ghi nhn hoc Cancel trong trng hp ngc li. chnh sa ni dung record, dng Edit; loi b record hin hnh trong form, dng Delete; thay i record hin hnh, dng Move v cung cp di tnh t record hin hnh. di l mt s nguyn dng hay nguyn m ty theo bn mun di v hng u bng hay cui bng. Bn c mun xp th t bng theo mt trng no khng? Ch cn nhn chut vo nt lnh Sort v khai bo tn trng m bn mun dng lm kho. Hnh 10 l hp thoi m bn s cung cp tn kha sp xp.

Hnh 10. Khai bo kha sp xp cho bng. Nu mun d tm mt record no , thay v s dng thanh trt, bn dng nt lnh Find v chn kha d tm, chn ton t v chn gi tr cho kha d tm. Vi nhng record trng kha d tm th sao? Liu VisData ch c kh nng tm duy nht mt record u tin trng kha? VisData chp nhn d tm c nhng record trng kha khc nu ln d tm sau bn chn nhim Find Next. Hnh 11 minh ha cch dng lnh Find d tm record lin quan n tc gi Knuth,D.

Hnh 11. Khai bo biu thc d tm. Cui cng l thao tc lc nhng record tha mn mt iu kin cho trc m vi nhng bn quen dng Fox th l ch th SET FILTER. Chng hn, bn mun lc tt c nhng record v tc gi Knuth,D., hy nhn chut vo nt lnh Filter ri cung cp iu kin lc record vo hp thoi nh Hnh 12 ch ra.

Hnh 12. Lc nhng record theo mt iu kin S dng ch th SQL VisData cng c kh nng chy nhng ch th SQL nu bn nhp dng lnh vo ca s SQL Statement ri bm chut vo nt lnh Execute thi hnh. Khi c hp thoi hi bn ch th SQL sp thi hnh c phi l mt SQLPassThrough hay khng, bn nh chn "No". Nu khng b bt li, Queries thu c s l mt form. lm v d, bn th m CSDL Biblio.mdb (l CSDL ci t theo VBasic) bng lnh File.Open v pht ch th chn tn, a ch, m ca nhng nh xut bn ca thnh ph New York. Bn c nhp dng lnh SELECT Name, Address, PubID FROM Publishers WHERE City="New York" hay khng? Nu mun th cng c to Query, chng hn nh wizard, hy dng lnh Utility.Query Builder. Bn mun chn cc bng v trng cn cho Query, d nhin phi chn trong hai hp lit k Tables v Fields to Show. cung cp iu kin cn truy vn, bn c th dng cc hp combo Field Name, Operator, Value. Nu trong iu kin cn nhng ton t And, Or bn dng hai nt And into Criteria, v Or into Criteria.

Hnh 13. To Query bng wizard thng qua Query Builder To form v sinh m cho ng dng Gi s trong mt CSDL mi, bn to mt bng c tn Reader vi cc trng ReaderID TEXT(5), Name TEXT(25), Address TEXT(255) v ang nh to form nhp record cho bng ny vi m lnh bng VBasic. T VisData, bn m CSDL , quyt nh s m CSDL theo kiu no trong nhng kiu TableSet, DynaSet hay SnapShot. V bn s t i tng Data Control hay DBGrid vo trong form tng lai. Bn chn nhng n nh bng nt cng c nh m t Hnh 2. Sau bn s ly lnh Utility. Data Form Designer. Hnh 14 cho thy nhng g bn phi khai bo to lp mt form: nhp tn ca table vo hp RecordSource, nhp tn form vo hp Form Name w/o Extension, v chn cc trng m bn mun th hin trong form. Cc trng ny c chn t hp list box Available Fields chuyn vo Include Fields. Cng vic chm dt bng nt lnh Build the Form. By gi c th ng VisData bng lnh File.Exit tr v VBasic. Hn bn s ngc nhin vi form mi to vi nhng chi tit kh chuyn nghip. Thch th hn na khi chuyn sang mn hnh Code, bn s thy m lnh c sn.

Hnh 14. Hp thoi ca Data Form Designer n y bn c th ni g v phin bn mi ca VBasic? ng nng cp phi khng?

Xy dng chng trnh khi ng cc chng trnh khc

Nhp Dn
by v v qung co thm cho my tnh c rt nhiu cch. Nhng nu bn l ngi chuyn rp my hay mt ca hng tin hc th c l bn nn vit 1 chng trnh t ng chy lc khi ng (Start Up) trng by cc phn mm ci t trn my, lun tin gii thiu cht t v mnh hay ca hng. Ta tm t tn cho chng trnh u tin ny l "Launch" nh. Vit chng trnh, c rt nhiu ngn ng lp trnh d sc vit mt chng trnh nh vy. Nhng d dng hn ht, c l v Visual Basic. Vit chng trnh ny bng Visual Basic khng i hi g bn nhiu, ch cn cht kho lo v p dng cc cng c ca Visual Basic mt cch thch hp cng thm cht t sng to m thi.

Chng trnh Launch hon tt C rt nhiu cch phn loi cc phn mm ci t trn my. Chng trnh th d ny phn nhm cc ng dng ci t trong Windows thnh 3 nhm: Windows System (cc cng c chun ca Windows), Applications (cc ng dng ca ngi dng ci thm), Vietnamese Utilities (cc tin ch v ting vit). C ch hot ng ca chng trnh ny l "mi la" cho ngi s dng khi ng chng trnh m mnh cn bng menu hay cc button ca chng trnh, sau chng trnh ny t ng "bin".

mi la cho ngi s dng, ta buc phi bit chnh xc v tr ca cc file chng trnh m ngi dng cn. u tin l cc tin ch km theo Windows nh WordPad, Notepad, Paint, ... (ti ch xin th d 3 chng trnh thi). Cc file thc thi ca chng trnh ny ch yu nm trong th mc Windows, vy ch cn tm ra th mc Windows l ta c th gii quyt c vn . Chuyn ny cng rt d dng v v cng may mn l Windows c kh nng t ng tm kim cc file thc thi trong th mc Windows v Windows\System cho nn chng ta khe (ta c th hiu l n t t dng dn n th mc Windows v Windows\System). Ch : Khi mun gi WordPad bn phi gi file write.exe v Paint phi gi file Pbrush.exe. 2 file ny khng phi l file chng trnh chnh, chng ch c nhim v gi file thc thi ca Paint (MSPaint.exe) v WordPad (WordPad.exe) nm trong Program files\Accessories mi thc s l file chng trnh chnh. Microsoft phi lm nh vy tng thch vi cc chng trnh c ca Windows 3.x. Sau y l tn file ca mt s chng trnh c sn trong Windows (vi iu kin bn phi cho ci t khi setup Windows). Tn file notepad.exe write.exe Pbrush.exe Cleanmgr.exe Defrag.exe Scandskw.exe Sndvol32.exe Winfile.exe Msconfig.exe Sfc.exe Sysedit.exe .... .... Th mc Windows Windows Windows Windows Windows Windows Windows Windows System System System Notepad WordPad Paint Disk Cleanup (W98) Disk Defragmenter Scan Disk Volume Control File manager System Configuration Utility System file checker System Configuration Editor .... Chng trnh

Vy l chuyn gi 1 chng trnh ca Windows khng c g kh khn, ch cn bit tn file l xong, mi chuyn cn li l ca Windows. Cn cc ng dng khc do ngi dng hay ngi lp my ci t thm ch c cch l gi theo ng dn chnh xc v mi my mi khc, cng sc cho vic tm kim kh gian nan, cha hp vi cc tay nghip d nh chng ta. Khuyt im ca chng trnh l phi vit ring cho tng my, chng ta s gii quyt vn ny bi vit sau "Nng cp chng trnh Launch". Bn cng c th vit chng trnh ny cho chc nng Auto Run ca CD chng trnh, lc nay mi chuyn li cng d dng v cc ng dn v chng trnh trn CD u nm trong tay ta, c i t th mc gc vo l xong chuyn.

Dng ActiveX (.OCX) a chng trnh vo System Tray


a c chng trnh ca mnh vo System Tray chng ta cn phi lp trnh, cng khng c g phc tp lm. Tuy nhin cch nhanh nht l dng mt ActiveX (tp tin .OCX) gip chng ta d dng a chng trnh ca mnh vo System tray m khng h tn mt git m hi. Ti xin gii thiu vi cc bn mt ActiveX tn l ZTray dng trong cc phin bn Visual Basic 32 bit (hon ton free). Bn ch cn to i tng ny vo chng trnh & t cc thuc tnh thch hp cho n tc th chng trnh ca bn bay ci vo vo System Tray, thit ht .

Bt u vi ZTray control ()) c im - Ch cn to mt i tng duy nht , n s ho php cho chng trnh ca bn bay vo System Tray. - Biu tng (Icon) ca chng trnh trong System Tray phi l file biu tng (*.ico). - Icon ny phi c t trong mt ImageList, kch thc khng thnh vn . - Nu bn khng ch nh Icon, n s t ng ly Icon mc nh ca n (l qu a cu, trng xu t). - & cn nhiu th na .... ()) Mt s thuc tnh & s kin Ngoi nhng thuc tnh, s kin bnh thng ca mt i tng trong mi trng VB. ZTray cn c cc thuc tnh c sau. * ImageList Property

Thuc tnh ny bn c th gn cho n mt ImageList. Trong ImageList ny cha (cc) Icon m n dng lm biu tng chng trnh trong System Tray. Ch c th thay i lc Design, lc chng trnh ang chy bn khng thay i c thuc tnh ny u. C php: ZTray.ImageList [=value]

[value] Chnh l tn ca ImageList (kiu String) - Nu khng c ImageList n s t ng xi ci Icon mc nh ca mnh. - Nu bn c thay i biu tng lc chng trnh thc thi bn phi ch ng n bit bng cch thay i chuc tnh ImageNumber hoc gn ShowInTray = True (ngay c khi n ang l True). - Nhc li na: Biu tng phi l icon file. * ShowInTray Property Nhn gi tr Boolean (TRUE/FALSE). True ngha l cho hin Icon trong System Tray. L False th ngc li. C php: ZTray.ShowInTray [=value]

[value] l True hay False - ShowInTray s c hiu lc ngay khi chng trnh bt u Run. - C th gn bn True Update cho Icon trong System Tray nu c thay i. * ImageNumber Property Thuc tnh ny dng gn hoc truy xut th t ca Image m ZTray dng lm Icon cho chng trnh. Gi tr ny l ch s ca Image trong mt ImageList. C php: ZTray.ImageNumber [=value]

[value] Ch s ca image trong ImageList m ZTray dng lm biu tng (lm mt Integer). Biu tng t ng cp nht khi thuc tnh ny c s thay i. * TipText Property Dng gn hoc truy xut n ToolTip ca i tng, ToolTip ny s t ng xut hin khi bn r mouse n trn biu tng trong System Tray. C php: ZTray.TipText [=value]

[value] L mt String. di ti a l 64 k t, nu bn c tnh cho mt string qu di, n t ng ct bt. - S c tc dng ngay lp tc nu thay i.

* Click Event Xy ra khi ngi dng click nt (tri hay phi) chut vo Icon trong System Tray. C php: Private Sub ZTray_Click (Button as integer)

[Button] cho bit nt no c nhn. 1 l Left Mouse Button 2 l Right Mouse Button * DblClick Property Xy ra khi ngi dng Double click vo Icon trong System Tray (c tri ln phi u c cng nhn mt cch r rng). C php: Private Sub ZTray_DblClick (Button as integer) [Button] cho bit nt no c nhn. 1 l Left Mouse Button 2 l Right Mouse Button ()) Minh ha cch s dng 1. Chun b: Sau y l mt chng trnh th d minh ha cch s dng i tng ZTray. u tin bn hy chun b tp tin ZTray.ocx, nu cha c hy vo WebLH ti v, m nn vo th mc System ca Windows. Bn hy khi ng VB, to mt Project mi bt u cuc th nghim. 2. a ZTray vo n: Project / Components hoc dng t hp phm Ctrl - T m ca s Components. Cick chn ActiveX tn ZTray System Tray Control.

Nu cha c trong Danh sch bn c th Click nt Browse chn tp tin ZTray.ocx t mt th mc no V ZTray i hi c mt ImageList nn bn phi click chn thm "Microsoft Windows Common Controls 6.0". Click OK bn s thy ZTray Control xut hin trn hp ToolBox ca VB.

3. Thit k: Trn Form1, bn to mt ImageList tn l ImageList1 & mt ZTray tn l ZTray1. V to cc menu c tn tng ng nh sau: Caption PopUp Set ToolTips Show In Tray About Exit Name mnuPopUp mnuTips mnuShow mnuAbout mnuExit Checked

True

Click phi chut ln ImageList1 va to khi ny, chn Properties, chn tip th Images, dng nt Insert Picture thm vo mt s Image (nh l phi dng Icon file). i loi nh sau, vy l ta c 7 hnh (t 1 n 7). Click OK ng hp thoi ny li.

Li click phi ln ZTray1 va to. Nhp vo khung ImageList l ImageList1, ImageNumber l 1 (nh u tin trong ImageList1), TipText: nhp i mt vi ch, xong click OK.

Sau tin hnh vit code cho chng trnh nh sau Option Explicit Private Sub Form_Load() ZTray1.ImageNumber = 1 ZTray1.ShowInTray = True

End Sub Ngay lc form c np, t ch s cho ImageNumber & cho hin biu tng trong System Tray. Private Sub Form_Unload(Cancel As Integer) ZTray1.ShowTray = True Visible = False Cancel = 1 End Sub Khi ngi dng click nt close trn thanh Title bar, chng trnh s khng thot m ch n form i thi. Nhng trc khi giu Form n li cho hin Icon nu lc n trnh trng hp c Form ln Icon u bin mt. Private Sub mnuAbout_Click() 'About MsgBox "ZTray Demo by Thien Dang 30/07/2000" End Sub Private Sub mnuExit_Click() 'Exit End End Sub Thot khi chng trnh bng lnh Exit trong menu. Private Sub mnuIcon_Click() ' Set Icon ZTray1.ImageNumber = InputBox("Image (1 - 7) ?", "Icon", 1) End Sub Thay i Icon cho ZTray. Ta c th nhp vo s t 1 n 7 do c 7 Image nh ni trn. Private Sub mnuShow_Click() 'Show In Tray mnuShow.Checked = Not (mnuShow.Checked)

ZTray1.ShowInTray = mnuShow.Checked If mnuShow.Checked = False Then Visible = True End Sub Chc nng ny c nhim v bt tt ci Icon ca chng trnh. Khi bn tt n s t hin th form ln trnh trng hp c Icon ln form u mt tch. Private Sub mnuTips_Click() ' Set Tooltips ZTray1.TipText = InputBox("Your text here", "Enter TipText", "Text") End Sub Thay i ToolTip. di ti a 64 k t. Private Sub ZTray1_Click(button As Integer) If button = 1 Then Me.Visible = True SetFocus Else PopupMenu mnuPopUp End If End Sub Nu click nt tri th hin Form, nt phi th hin menu. By gi bn c th chy th chng trnh ca mnh ri y. Bn c th click phi chut trn Icon trong System Tray truy xut menu.

Chc bn thnh cng.

Nhng cu hi nh

Sau y l mt s cu hi nh ca cc bn ti, bn c th dng chng t im thm cho ng dng Visual Basic ca mnh. y khng phi l nhng iu cao siu, l lm v cng khng phi l cch gii thch ti u nhng n gip chng ta hiu thu o c mt s vn . Hy vng sau khi c xong bn s " th ra l vy ! ..." Lm sao c c nhng dng ch chy lin tc trn mn hnh ? Tht ra chuyn ny cng d hiu, bn ch cn ct ch u on vn bn v gn n vo cui on vn bn, lm lin tc nh vy s to cho ngi dng c cm gic l dng ch ang chy. Bn hy m 1 form mi, trn to 1 textbox (Text1), gn 1 dng vn bn vo thuc tnh text ca textbox, to 1 timer (timer1). Khi form load s khi ng Timer vi tr Interval = 100 Private Sub Form_Load() Timer1.Interval = 100 End Sub V timer s x l cc lnh theo yu cu ca bn mi khi n pht sinh 1 s kin thi gian. Private Sub Timer1_Timer() Dim x As String Dim y As String 'gn x = 1 k t u dng vn bn x = Left(Text1.Text, 1) 'gn y l phn cn li y = Right(Text1.Text, Len(Text1.Text) - 1) 'Hin th tr li textbox theo th t ngc li. Text1.Text = y + x End Sub Bn c th thay textbox bng labelbox ngi dng khng th can thip vo dng vn bn ang chy, lc ny bn phi thay i thuc tnh caption thay v text ca textbox. Canh form gia mn hnh khi hin th ? Ch vic thm nh lnh ny vo th tc tnh hung FormLoad ca form tng ng. Me.Move (Screen.Width - Me.Width)\2, Screen.Height.Height - Me.Height)\2 Lm th no to hiu ng 3D ? Bn hy m 1 form trng, trn to 1 image, v 4 i tng Line. Kho st tnh hung MouseMove ca Image, khi r mouse trn Image lp tc 4 i tng line s hin th xung quanh Image. Cn 3D ? Bn ch vic cho 2 line ca cnh phi v di mu en (Line1, Line2), cn 2 line ca cnh tri v trn mu trng (Line3, Line4).

Form khi thit k Khi di chuyn Mouse trn form, mi chuyn u bnh thng, 4 i tng Line khng xut hin (thuc tnh Visible=False) Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Line1.Visible = False Line2.Visible = False Line3.Visible = False Line4.Visible = False End Sub Khi di chuyn mouse trn i tng Image, 4 line s c xp xung quanh v hin th li bng cch thay i cc thuc tnh X1, Y1, X2, Y2 ca line. Nh c mu sc thch hp nn ta c cm gic Image ni ln khi r mouse n.

Khi r mouse n Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Cnh Phi Line1.X1 = Image1.Left + Image1.Width Line1.Y1 = Image1.Top Line1.X2 = Image1.Left + Image1.Width Line1.Y2 = Image1.Top + Image1.Height 'Cnh di Line2.X1 = Image1.Left Line2.Y1 = Image1.Top + Image1.Height Line2.X2 = Image1.Left + Image1.Width Line2.Y2 = Image1.Top + Image1.Height 'Cnh tri Line3.X1 = Image1.Left Line3.Y1 = Image1.Top Line3.X2 = Image1.Left Line3.Y2 = Image1.Top + Image1.Height 'Pha trn Line4.X1 = Image1.Left Line4.Y1 = Image1.Top Line4.X2 = Image1.Left + Image1.Width Line4.Y2 = Image1.Top 'Cho hin li 4 i tng Line

Line1.Visible = True Line2.Visible = True Line3.Visible = True Line4.Visible = True End Sub Khi nhn Mouse trn Image, s kin MouseDown (nhn mouse) pht sinh v o mu ca 4 i tng line to cm gic Image b lm xung.

V khi nhn mouse Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Line1.BorderColor = QBColor(7) 'Mu trng Line2.BorderColor = QBColor(7) Line3.BorderColor = QBColor(0) 'Mu en Line4.BorderColor = QBColor(0) End Sub Sau khi nhn, th mouse ra lm pht sinh s kin MouseUp, cc lnh cn x l trong s kin ny l tr mu sc li nh ban u. Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Line1.BorderColor = QBColor(0) Line2.BorderColor = QBColor(0) Line3.BorderColor = QBColor(7) Line4.BorderColor = QBColor(7) End Sub Thy c v hi cc kh qu cc bn nh ? Custom Control trong Visual Basic 5.0 Khi vit mt ng dng trong VB nu khng s dng thm bt c mt Custom Control no ngoi cc Control chun ca VB. Sau khi dch thnh file EXE, mun chp sang my khc bn phi chp km theo 2 file th vin chun VB nm trong th mc System. MSVBVM50.DLL (1.355.776 bytes) CTL3D32.DLL (45.056 bytes) y l 2 file th vin cn thit cho bt c ng dng no vit bng Visual Basic. Bi vy c nhiu khi file chng trnh EXE ca bn ch vi ba chc Kb m phi vc theo 2 file ny qu l hi bt tin, tuy nhin bn c th nn chng li cho nh bt, ti th v sau khi nn ch cn 655.557 bytes thay v 1.400.832 bytes nh lc u. Cn nu trong ng dng ca bn c xi thm cc Custom Control th nn lu phi chp thm cc file tng ng, c nh vy khi em qua my khc chng trnh ca bn mi chy c.

Khi bn chn mt Custom Control trong hp thoi Components th file tng ng s c hin th phn Location, bn hy cn c vo y m tm chp cho ng. Cc file ny thng c phn m rng l DLL hay OCX nm trong th mc System (c th m bng Visual C++). Hy chp chng vo th mc Windows, System, cc th mc c t ng dn PATH, hay cho chung vo cng th mc vi file EXE ca my cn chy chng trnh ca bn. C th dng mt chng trnh to b a Setup v ch nh cho chng chp thm cc file ny, v d nh Create Install chng hn. ng thi nu c trnh Setup, chng trnh ca bn trng c v ng hong v chuyn nghip hn (c th tin cy c). Phin bn ca ng dng Visual Basic Khi bn vit mt chng trnh bng Visual Basic, trong ng dng ca bn lun xut hin mt i tng tn l App, trong cc thuc tnh ca i tng App c 3 thuc tnh lu gi s phin bn (Version). Ta c th d dng truy cp 3 thuc tnh ny bit c version ca chng trnh. App.Major: Con s chnh App.Minor: Con s ph App.Revision: Con s ny cho bit s ln bn hiu chnh v dch li chng trnh. Bn c th dng mt Msgbox th hin Version ca chng trnh:

Msgbox "Version: " & App.Major & "." & App.Minor & App.Revision

Tuy nhin bn c th cho con s Revision t ng tng mi ln dch chng trnh, vo Project \ Properties, chn tab Make v click chn mc Auto Increment trong khung Version Number

Hoc cho chng trnh th hin phin bn ln Caption ca Form khi Load Private Sub Form_Load() Me.Caption = Me.Caption & " - Ver " & App.Major & "." & App.Minor & App.Revision End Sub

To mn hnh Splash Screen Bn c khi khi ng Visual Basic khng ? Ttrc khi chng trnh Visual Basic c khi ng thng c mt khung nh sau hin ra trong chc lt li bin mt v VB sn sng cho bn lm vic. Khng ch Visual Basic khng u, hu nh tt c cc phn mm hin nay u c mn hnh ny.

Khung ta gi l mn hnh Splash Screen, c cho hin th trong lc khi ng nhm trnh cho ngi dng st rut trong khi chng trnh np d liu hoc thc hin cc lnh cn thit, trn thng bo cc vn v bn quyn, phin bn, logo ... Khi chng trnh sn sng lm vic mn hnh ny t ng bin mt. Trong VB mn hnh Splash ny tht ra cng l mt Form nhng khng hin th thanh tiu , c np ln mn hnh t th tc tnh hung FormLoad ca 1 form no trong chng trnh (thng l Form chnh - form s lun lun c hin dch trong sut qu trnh lm vic). Private Sub Form_Load() Me.Show frmSplash.Show DoEvents <Cc lnh cn thc hin khi khi ng chng trnh> Unload frmSplash End Sub Me.Show: bt chng trnh v form chnh ln mn hnh. Bn c th ghi Show cng c v lnh Show mc nhin tc ng ln form hin hnh khi khng dc ch r i tng. frmSplash.Show: Cho hin th mn hnh Splash (bn lu : cho n lc ny frmSplash vn cha hin ln mc d gi) DoEvents: Ch cho Windows hin th hon tt frmSplash ln mn hnh. Sau lnh DoEvents l tp hp cc lnh cn x l trong khi chng trnh khi ng. Cui cng l lnh Unload frmSplash c tc dng ng mn hnh Splash Screen li. Lc ny chng trnh sn sng cho ngi dng.

Ngn ng lp trnh Visual Basic ngy cng tr nn ph bin, c rt nhiu ngi quan tm ti. Trong vng 2 nm tr li y bt u xut hin kh nhiu sch vit v ngn ng ny to iu kin cho chng ta tm hiu, theo ti d on trong vi nm ti n s thng dng nh Word, Excel vy. Cch thc lp trnh trong ngn ng ny rt gn gi vi Windows (bn s hiu Windows su sc hn khi lp trnh bng ngn ng ny). Nu bn hc Microsoft Access th ng nn b qua ngn ng lp trnh "thn tc" ny. Mc d chng trnh c vit ra chy khng hiu qu bng nhng ngn ng khc nhng vi n bn c th to ra mt ng dng Windows nhanh v d dng nh ... "nu mt gi m n lin" lc ny vn hiu qu c th tm cho qua. Nu bn mun tm hiu cn bn v Visual Basic th nn chn quyn "T hc lp trnh Visual Basic 5" ca tc gi Phm Thy Nhn, cn nu chu kh th hy tm nhng quyn sch ca Samis, thm ch trong lc i xem sch ti thy c quyn ghi l: "cha bit g, c sch, gp sch li, thnh chuyn gia" na y. T to Progress Bar cho ng dng Visual Basic [Combo box t hin danh sch] [Form Layout] Nu cc bn dng cc phin bn Enterprise - 32bit ca Visual Basic, th c sn 1 Custom control cho php bn to nhanh mt Progress bar theo mt ca Windows 9.x trng rt n s nhng chun mc

Cn y ti xin trnh by cch t ch Progress bar bng cc control chun ca Visual Basic (Picture box), cch ny c bit hu ch cho cc bn cn dng phin bn vb 16bit hay khng mun vc theo file COMCTL.OCX (MSCOMCTL.OCX) kch thc trn di 1Mb km theo ng dng ca mnh. Bn hy to 2 Picture box lng vo nhau, di chuyn v tr Picture box bn trong, chn mu sc cho thch hp. Cn n chy c ? bn hy tng (hoc gim) rng ca Picture box bn trong, cc i khi rng Picture box bn trong = bn ngoi, cc tiu khi rng Picture box bn trong = 0.

Pha trn l xn, pha di l hng t ch.

Bn thy khng cng ngang nga ch b, khng nhng th hng t to cn cho php chng ta thay i mu sc mt cch v t, mun xanh tm vng u c c, v kh nng ny th xn rt kh thc hin nu khng mun ni l khng c. minh ha ti dng mt Timer (Timer1) v 2 Picture box (Picture1 v Picture2), Picture2 mu xanh nm trong Picture1 mu xm. Cng vi on m sau: Option Explicit Private Sub Form_Load() Picture2.Width = 0 Timer1.Interval = 1000 End Sub Private Sub Timer1_Timer() If Picture2.Width < Picture1.Width Then Picture2.Width = Picture2.Width + Picture1.Width \ 20 Else Timer1.Interval = 0 MsgBox " 20 giy tri qua ri y !" End End If End Sub Khi chy th chng trnh bn s thy Progress bar ca chng ta thay i mi giy 1 ln, cho n ht 20 giy, thng bo bng hm MsgBox nu bn click OK th n goodbye bn lun. Lm th no 1 combo box t ng hin danh sch khi nhn c focus, m khng cn ngi dng click chut ? [T to Progress bar] [Form Layout] Combo box d thy nht trong cc tho trnh l hp chn font nh hnh di y.

lm c vic ny, bn cn nh li t hp phm tt m mt combo box trong Windows l ALT - DownArrow (Mi tn xung). Do ta ch cn lm sao cho combo box nhn c t hp phm ALT + DownArrow l m chuyn. Rt d dng bn hy cho lnh Sendkeys gi 1 t hp phm ALT - DownArrow t th tc tnh hung GotFocus ca Combo box cn m. Hy to 1 form mi trn to mt control no v d nh CommandButton, k n bn hy to 1 Combo box. L do bn phi to Command button trc cho n c focus trc (TabIndex = 0), khi chy chng trnh bn hy nhn phm Tab chuyn focus sang cho combo box, lc ny bn s thy rt r tc dng ca lnh SendKeys. Private Sub Combo1_GotFocus() SendKeys "%{DOWN}" End Sub Cu lnh SendKeys "%{DOWN}" dng gi t hp phm ALT - DownArrow ln Combo box khi chnh n nhn c Focus do ngi s dng dch chuyn bng phm Tab hay bng Mouse. S lm cho combo box t ng m ra (hin danh sch).

Th thut ny hu ch khi bn vit cc ng dng c yu cu nhp d liu, thng th ngi dng nhp d liu bng bn phm, sau nhn phm Tab n mt combo box, n s bung ra ngay ngi dng chn la, rt tin dng, khin cho ngi ta cm thy rt hi lng v chng trnh ca mnh. Ca s Form Layout dng lm g ? [T to Progress bar] [Combo box t hin danh sch]

y l mt trong nhng tnh nng mi ca Visual Basic 5 & 6, gip cho lp trnh vin d dng phn b cc form trn mn hnh khi chng trnh thc thi mt cch rt trc quan. Vo View \ Form Layout Windows, hay click vo Icon trn toolbar hin th ca s Form Layout nu cha xut hin.

s dng cc chc nng trn ca s ny, bn hy right click trn ca s bt menu Popup gm cc mc chn sau: Resolution Guides: Hin th phn gii mn hnh (ch hin th cc phn gii thp hn phn gii m mn hnh ang s dng). Dockable: Hin th Form Layout bng mt ca s ring hay nm chung vi cc ca s Project, Properties. Hide: ng ca s Form Layout. Startup Position: V tr form hin th trn mn hnh Manual: T bn thit lp, bng cch r form c tn tng ng, v da vo cc Resolution Guides bit r v tr form s xut hin trn mn hnh khi chy chng trnh.

Center Owner: Nm gia form gi n. Center Screen: Nm gia mn hnh bt k phn gii no. Windows Default: Theo chun ca Windows, nm hi chch v gc tri trn ca mn hnh.

Mi form trong giai on thit k, mun hin th trn ca s Form Layout bn phi m form ln, n s xut hin trn ca s Form Layout bng tn tng ng, v tr thc ca n s xut hin trn mn hnh lc chy c phn nh rt chnh xc trong ca s ny. Xa nay ngi ta c quan nim l ngn ng lp trnh Visual Basic "b yu" hn cc ngn ng khc do khng c cc hm, th tc can thip n cc thng tin cp thp ca h thng nh ngn ng C. Nhng cng chnh Visual Basic b vo s thiu ht ng tic ca mnh bng cch lin kt v s dng cc hm API (Application Programmer's Interface) c sn trong Windows qua cu lnh Declare. Gip cho ta lm c khi vic tng chng nh v vng. Tht ra cc hm API ny c to ra bng ngn ng C do ta c th tn dng c cc kh nng ca C trong Visual Basic. Cc hm API tn ti di dng file c phn m rng l DLL hay EXE trong th mc System. cc bi vit sau chng ta s cng nhau tm hiu v cc API tuyt vi ny. Mt ng dng Visual Basic vit ng hong, chy ngon lnh th ai nhn m bit c bn vit bng ngn ng no (bn lu ch cho ngi ta nhn thi nh). Gi Internet Explorer (IE) Chc nng Wordwrap / Mu hm API C rt nhiu cch gi trnh duyt Internet Explorer ca Windows. y ti xin by cho bn 1 cch n gin nht. chy mt chng trnh khc t Visual Basic, bn buc phi dng hm Shell(), i s l g, mi l iu quan trng. Thng IE nm Program Files\Internet Explorer\IExplorer.exe th mc Program Files nm cng a vi th mc Windows. Tm li, ta tm th mc Windows a no, sau ly 2 k t u tin l tn a (Vi d C:), k n bn hy ghp vi "Program Files\Internet Explorer\IExplorer.exe" c ng dn n IE r rng. Tuy nhin cch ny s "ph sn" nu nh ngi dng "ngu hng" ci IE mt th mc khc.

C mt cch khc hi "mnh mung" mt cht, nhng n gin hn v trit hn rt nhiu. Bn c th "x gt" Windows gi IE thng qua Windows Explorer bng cch chuyn cho n mt tham s l file htm, lc ny t ng Windows Explorer nhn bit v "al" n cho IE vo th ch. Vy cng xong chuyn, vic gi Windows Explorer rt dng Th d: Cn gi IE hin th file "testfile.htm" bn c th dng hm Shell() nh sau: Shell("explorer.exe testfile.htm",vbNormalFocus) Lu : cch ny i hi h thng bn phi c Internet Explorer 4 tr ln. Tht l n gin phi khng bn ? To chc nng WordWrap bng thuc tnh ScrollBars ca TextBox Gi Internet Explorer / Mu hm API Trong cc trnh son tho vn bn (nh Notepad). Nu chc nng Wordwrap c chn, khi g vn bn n gii hn ca cnh phi ca s, th vn bn t ng rt xung dng di. Ngc li nu khng cho hiu lc chc nng ny, ch khi no bn nhn phm Enter mi xung dng c. Bn c mun to 1 tnh nng Wordwrap nh trong Notepad khng ? Cng d lm. Chng ta hy li dng thuc tnh ScrollBars ca Textbox lm tnh nng Wordwrap. Properties ScrollBars Thuc tnh ny dng quy nh cho Textbox c cc thanh cun hay khng, nhng thuc tnh ny ch c tc dng khi thuc tnh Multiline ca Textbox = True. 0 - None: Textbox khng c thanh cun. 1 - Horizontal: Ch c thanh cun ngang. 2 - Vertical: Ch c thanh cun ng. 3 - Both: C c 2 thanh cun ngang v ng. Tnh nng Wordwrap ch c tc dng khi thuc tnh ScrollBars l: 0 - None hoc 2 - Vertical Khng c Wordwrap khi ScrollBars l: 1 - Horizontal hoc 3 - Both Nhng thuc tnh ny khng th thay i trong lc chng trnh thc thi. Ch cho php thay i trong lc thit k m thi. Do bn phi to lun 2 Textbox: Mt Textbox khng c Wordwrap (Text1), mt Textbox c Wordwrap (Text2).

Trong lc thit k bn hy cho 1 Textbox n i (Visible = False). Trong th d minh ha ny ti cho Text2 n. Text1.Visible = True Text2.Visible = False Sau hy to mt Control no chuyn i qua li gia ch Wordwrap v khng Wordwrap. Trong minh ha ny ti to lun mt trnh Notepad, v t lnh Wordwrap vo menu Edit ca chng trnh (Name: WWrap).

Sau y l Code ca mt s Control cn thit cho vic Demo chc nng Wordwrap. Option Explicit Private Sub Form_Resize() Text1.Move 0, 0, ScaleWidth, ScaleHeight Text2.Move 0, 0, ScaleWidth, ScaleHeight

End Sub iu chnh kch thc v v tr ca 2 Textbox, cho thch hp vi kch thc ca Form mi khi ngi dng thay i kch thc ca s, hoc chng trnh khi ng. Xin bn hy nh mt iu l: tnh hung Form_Resize lun lun c triu gi mi khi Form_Load. Private Sub mnuWWrap_Click() mnuWWrap.Checked = Not (mnuWWrap.Checked) If mnuWWrap.Checked = True Then Text1.Visible = False Text2.Visible = True Text2.SetFocus Else Text1.Visible = True Text2.Visible = False Text1.SetFocus End If End Sub Cc lnh cn x l khi ngi dng chn chc nng Wordwrap. Cho n hin Text1 hay Text2 ty theo trng thi (check hoc khng check) ca menu WordWrap. Private Sub Text1_Change() Text2.Text = Text1.Text End Sub Private Sub Text2_Change() Text1.Text = Text2.Text End Sub Tuy nhin ti mi thi im, ngi dng ch lm vic (g vn bn) trn mt Textbox m thi, cho nn ta phi tin hnh cp nht lin tc ni dung ca 2 Textbox mi khi c 1 s thay i no trn bt c Textbox no nh vo th tc tnh hung Change. Nhng nu ch by nhiu thi th khng n. Mi ln ngi dng chuyn qua li gia Wordwrap v khng Wordwrap tc l thay i Textbox, t nhin ngi dng c cm gic l l do con tr khng nm ng v tr qu tht l hi "v duyn". khc phc nhc im trn bn hy thm vi dng Code sau y vo chng trnh m bo ngi dng khng h bit c l bn nh tro Textbox ca h mi khi chn chc nng Wordwrap. Private Sub Text1_GotFocus() Text1.SelStart = Text2.SelStart End Sub

Private Sub Text2_GotFocus() Text2.SelStart = Text1.SelStart End Sub By gi bn hy chy th chng trnh v g vo vi dng vn bn, sau chn lnh Wordwrap vi ln xem, i cha ! tht l tuyt, chnh bn cn b "la"na. Ly cc mu khai bo hm API Gi Internet Explorer / Chc nng Wordwrap bit cch khai bo hm API bn cn khi ng tin ch API Text Viewer c cung cp km theo Visual Basic.

Np file Win32api.txt vo, chn Declares trong phn API Type (c th bn phi ch giy lt chng trnh load file ny ln v kch thc rt ln). Hoc bn cng c th xem trc tip file ny (dng Text) bng Wordpad.

Sau , bn hy chn hm trong danh sch Available Items, hm no cn dng nhn nt Add thm vo hp vn bn Select Items pha i. Sau khi chn xong tt c cc hm cn

dng, nhn nt Copy chp cc hm va chn vo Clipboard. K n bn ch vic Paste vo Visual Basic dng m thi. Cc hm API c 2 dng: hm (Function) c tr tr v v th tc (Sub) khng c tr tr v. Khai bo cho hm c tr tr v nh sau: Declare Function <tn hm API> Lib <Tn th vin> [Alias <tn b danh>] ([danh sch cc i s]) Khai bo cho cc th tc: Declare Sub <tn hm API> Lib <tn th vin> [Alias <tn b danh>] ([danh sch cc i s]) <tn hm API> l tn hm trong cc file th vin DLL. <tn th vin> tn file th vin DLL Visual Basic tm cc hm API. Cc file th vin ny phi c y tn cng phn m rng, ring i vi 3 th vin USER, KERNEL, v GUI th khng cn phi c phn m rng. Tn ny l mt String nn cn phi bao trong du "". [Alias <tn b danh>] c th c hay khng cng c. Bn cn khai bo b danh khi mun triu gi hm API vi mt ci tn khc do chnh bn t, hoc trong tn hm chun c cha k t b cm s dng trong Visual Basic, lc ny bn hy t b danh cho n Visual Basic s dng c. V d hm API "AddfontResource " sau y c t li b danh l AddFont cho ngn gn mi ln gi hm. Declare Function AddFontResource Lib "gdi32" Alias "AddFont" (ByVal lpFileName As String) As Long Phm vi s dng ca hm API cng ph thuc vo cc v tr khai bo n nh cch khai bo cc bin trong Visual Basic Thm mt i tng trong lc chng trnh thc thi Ngoi cc Control trong lc thit k chng trnh c bn to ra, trong lc chng trnh ang thc thi (chy) bn vn c th to thm cc Control mt cch kh d dng vi iu kin nh sau to nn mt mng cc Control. - Phi c ti thiu 1 Control ban u - C thuc tnh Index = 0 Trong lc chng trnh chy bn c th dng cu lnh sau y Load mt Control ln. Khi Control c Load ln n s mang cc thuc tnh ging ht vi ci ban u ch tr ch s Index. Bn hy dng lnh sau Load. Vi Index l ch s ca phn t k tip trong mng Load object(index) Visual Basic ch cho php bn Load n 32767 (Gii hn ca Integer) phn t trong mt mng m

thi. Sau y l mt th d minh ha cch thm CommandButton - Bn hy to mt CommandButton, t thuc tnh Name = cmdBtn v Index = 0 (zero). Khi bn nhp vo thuc tnh Index ca mt con s cng c ngha l bn to mt mng cc i tng . - Paste vo on Code sau: Private Sub cmdBtn_Click(Index As Integer) Dim btn As CommandButton Dim iIndex As Integer iIndex = cmdBtn.Count If iIndex <= 32767 Then Load cmdBtn(iIndex) Set btn = cmdBtn(iIndex) With btn .Top = cmdBtn(iIndex - 1).Top + 620 .Caption = "Command" & iIndex + 1 .Visible = True End With Set btn = Nothing End If End Sub

Nhn F5 chy th chng trnh, Click chut vo CommandButton bn s thy mt CommandButton na xut hin pha di. Nh ToolTip hin th d liu qu di trong ListBox Bn c khi no bn gp trng hp Item cn hin th trong ListBox li di hn b rng ca Listox khng ? Trong rt d hm phi khng ? T nhin mt khc ui ca ngi ta.

V y l gii php. Bn hy dng mt ToolTip, ni dung ca ToolTip chnh l ni dung Item ca ListBox mi khi bn r Mouse n.

Hy m 1 form mi, trn to 1 ListBox (Name: List1). Ti phi dng n hm API SendMessage v hng (LB_ITEMFROMPOINT = &H1A9) lm vic ny. Option Explicit Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long,ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long Private Const LB_ITEMFROMPOINT = &H1A9 th tc tnh hung Form_Load() bn hy thm vo vi dng lnh Add vo ListBox (Nh cho dng d liu di di mt cht thy r tc dng). Private Sub Form_Load() List1.AddItem "Tao bo dia cai dat phan mem" List1.AddItem "Su dung Font Navigator" List1.AddItem "Tao man hinh Splash Screen" List1.AddItem "EditPlus (Text/HTML Editor for Windows)" List1.AddItem "Tu tao Progress bar cho ung dung" List1.AddItem "Combo box tu hien danh sach khi nhan focus" List1.AddItem "Cua so FormLayout dung de lam gi" End Sub 'Khi r mouse trn ListBox, th tc sau y s ly ni dung ca Item ti v tr Mouse v cho hin ln bng ToolTip. Private Sub List1_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Dim lXPoint As Long Dim lYPoint As Long Dim lIndex As Long If Button = 0 Then 'Nu khng c nt no c nhn lXPoint = CLng(X / Screen.TwipsPerPixelX) lYPoint = CLng(Y / Screen.TwipsPerPixelY) With List1 lIndex = SendMessage(.hwnd,LB_ITEMFROMPOINT,0, _ ByVal ((lYPoint * 65536) + lXPoint)) 'Hin ToolTip hoc xa ci trc If (lIndex >= 0) And (lIndex <= .ListCount) Then .ToolTipText = .List(lIndex) Else .ToolTipText = "" End If End With End If End Sub

Lm sao TextBox t ng Select vn bn mi khi nhn focus ? Bn c ch hu ht cc phn mm, nu ngi dng cn nhp liu vo mt hp vn bn (TextBox) no , th khi ngi dng nhn Mouse hoc Tab chuyn n TextBox, tc th ton b d liu ang hin c trong TextBox s c Select. Cch ny gip ngi dng g d liu khc ln d liu hin hu, m khng phi mt cng xa i ri g li ci khc.

Vit mt th tc ring, th tc ny nhn i s l mt TextBox Public Sub FocusMe(ctlName As TextBox) With ctlName .SelStart = 0 .SelLength = Len(ctlName) End With End Sub

'By gi bn hy gi hm ny trong th tc tnh hung GotFocus ca mt TextBox Private Sub txtFocusMe_GotFocus() Call FocusMe(txtFocusMe) End Sub

Hy vng nhng cu hi nh ny s gip ch cho bn trong lc pht trin mt ng dng bng Visual Basic. Chc bn thnh cng. Trong k ny: 1. Kim tra s tn ti ca file bt k u 2. Kim tra phn gii mn hnh 3. Import file reg vo registry 4. S khc nhau khi load form ch MODAL & MODELESS 5. Khi no, ti sao phi dng Option Explicit 6. To menu PopUp

1. Kim tra s tn ti ca file bt k u 2. Kim tra phn gii mn hnh 3. Import file reg vo registry 4. S khc nhau khi load form ch MODAL & MODELESS 5. Khi no, ti sao phi dng Option Explicit 6. To menu PopUp gi cho ng dng ca bn sun s khi chy trnh trng hp b li chng trnh v ngng mt cch "bt hp php", nu ngi gp li l chnh bn th khng c g, nhng nu ngi gp li khng phi l bn, bn s b "mt mt" v chng trnh ca mnh. C th hn, trong qu trnh lm vic vi file, bn cn phi lun kim tra file c tn ti hay khng trc khi thc hin mt tc v ghi c no . Di y l mt chng trnh con dng kim tra, i s duy nht l ng dn file cn m. Public Sub VerifyFile(FileName As String) ' On Error Resume Next 'M file th kim tra Open FileName For I`165432nput As #1 If Err Then

MsgBox ("The file " & FileName & " cannot be found.") Exit Sub End If Close #1 ' End Sub Bn hy t n vo mt module s dng cho ton chng trnh. Nu qu trnh kim tra din ra tt p th khng c g, nu c trc trc bn s thy mt MsgBox xut hin, nh by li, chng trnh ca chng ta vn hot ng tip tc. By gi bn hy to mt form mi, thm vo mt CommandButton (Name: cmdVerify), g vo on Code cho tnh hung Click(), nhn F5 chy th. Vi chng trnh con nh vy bn c th gi n kim tra s tn ti ca file trong chng trnh. Private Sub cmdVerify_Click() ' Call VerifyFile("MyFile.txt") ' End Sub

2. Kim tra phn gii mn hnh 1. Kim tra s tn ti ca file bt k u 3. Import file reg vo registry 4. S khc nhau khi load form ch MODAL & MODELESS 5. Khi no, ti sao phi dng Option Explicit 6. To menu PopUp Nu chng trnh ca bn c i hi phi chy trong mt phn gii mn hnh nht nh no , bn c th dng cch sau y kim tra phn gii ca mn hnh c thch hp vi chng trnh ca mnh khng, ri sau mi chy. Hm CheckRez(rng, cao) nhn vo 2 tham s l chiu rng v cao ca mn hnh (tnh bng Pixel) tr v mt gi tr kiu Boolean (True/False). Nu tr v True c ngha l phn gii mn hnh ang s dng thch hp vi phn gii bn cn kim tra. Vd: CheckRez(800,600) = True Do Visual Basic s dng n v l Twip m bn li s dng l Pixel cho nn phi c s chuyn i n v.

Public Function CheckRez(pixelWidth As Long, _ pixelHeight As Long) As Boolean ' Dim lngTwipsX As Long Dim lngTwipsY As Long ' ' chuyn i t pixels sang twips lngTwipsX = pixelWidth * 15 lngTwipsY = pixelHeight * 15 ' ' kim tra li rng v cao ca mn hnh If lngTwipsX <> Screen.Width Then CheckRez = False Else If lngTwipsY <> Screen.Height Then CheckRez = False Else CheckRez = True End If End If ' End Function K n, bn hy dng cu lnh if cng vi iu kin kim tra l hm CheckRez on m bt u ca chng trnh. If CheckRez(640, 480) = False Then MsgBox "Incorrect screen size!" Else

MsgBox "Screen Resolution Matches!" End If

3. Inport mt file Registry (*.reg) 1. Kim tra s tn ti ca file bt k u 2. Kim tra phn gii mn hnh 3. S khc nhau khi load form ch MODAL & MODELESS 4. Khi no, ti sao phi dng Option Explicit 5. To menu PopUp Nu bn cn Import mt file reg vo Registry m khng mun lm bn tm n ngi dng. Bn hy chy Regedit vi thng s /s km theo sau l tn file v ng dn file reg cn Import vo Registry. C th nh sau: Dim strFile As String Dim lngRet strFile = App.Path & "\myreg.reg" If Len(Dir$(strFile)) > 1 Then lngRet = Shell("Regedit.exe /s " & strFile, vbNormalFocus) End If Vi cch ny file reg ca bn s c Merge vo Registry mt cch m thm, khng ai hay bit. V ng nhin bn cng c th g trc tip nh vy vo hp thoi run ca Windows.

4. S khc nhau khi load form ch MODAL v MODELESS 1. Kim tra s tn ti ca file bt k u 2. Kim tra phn gii mn hnh 3. Import file reg vo registry

5. Khi no, ti sao phi dng Option Explicit 6. To menu PopUp Nhng Form c load ch MODAL thng c yu cu bt buc v ch ngi dng nhp d liu trc khi thi hnh cc lnh khc trong cng mt th tc (Sub / Function). Form loi ny thng gi focus ca chng trnh cho n khi n c ngi dng "gii tn". Khi hin th form ch ny, cc lnh khng thuc form ang hin th s khng c thc hin, m phi ch cho n khi form ny c ng li. Cc MsgBox, InputBox chnh l mt dng ca Modal form. hin th form ch ny bn dng c php lnh sau: MyForm.SHOW vbModal Khi load form ch MODELESS cc lnh s c ln lt thc hin mt cch bnh thng t trn xung di trong mt th tc (khng cn ngi dng phi quan tm, t t ri xem cng c). cc MDI child lun dng modeless. hin th form ch modeless bn dng lnh: MyForm.SHOW

5. Ti sao phi dng Option Explicit? 1. Kim tra s tn ti ca file bt k u 2. Kim tra phn gii mn hnh 3. Import file reg vo registry 4. S khc nhau khi load form ch MODAL & MODELESS 5. To menu PopUp Nu dng Option Explicit xut hin trong ca s code ca chng trnh cng c ngha l Vb bc buc bn phi khai bo bin mt cch tng minh trc khi s dng chng. Mnh Option Explicit c t dng u tin trong ca s Code (General Declaration). Qu tht vic bt buc phi khai bo bin s lm cho chng trnh r rng, gim thiu ti a cc sai st ngoi mun (bugs) do kh nng t pht sinh bin mi m khng cn khai bo ca Visual Basic . y cng l con dao 2 li, theo ti tnh nng ny hi nhiu hn l li.

Bn c th g trc tip mnh Option Explicit hay nh VB t ng thm gip bng cch vo Tools / Options. Check vo Require Variable Declaration trong th (tab) Editor.

Option Explicit s v hiu kh nng t pht sinh bin ca Vb. Nh vy, tt c cc bin mun s dng u phi khai bo bng t kha DIM hay #800000IM, bin no cha c khai bo VB s thng bo li v bt bn phi khai bo mi chy c chng trnh. Kiu d liu mc nhin m mi ln Visual Basic (Basic) to bin mi l Variant. 6. To menu PopUp (THIEN DANG) 1. Kim tra s tn ti ca file bt k u 2. Kim tra phn gii mn hnh 3. Import file reg vo registry 4. S khc nhau khi load form ch MODAL & MODELESS 5. Khi no, ti sao phi dng Option Explicit Trong ng dng ngoi loi menu ko xung (PullDown) cn mt loi menu na kh linh ng gi l menu PopUp. Loi menu ny bn rt thng s dng trong Windows 9.x, c kch hot bng phm phi chut. Mt ng dng Windows hon chnh chy trong Windows 9.x khng th khng c loi menu cp tc ny. Trong Visual Basic loi menu ny tht ra cng l mt menu PullDown bnh thng m thi. Khi no cn hin thnh menu PopUp bn ch vic gi tn menu tng ng (Name ca Menu). cho thnh menu PopUp th thit bn hy cho menu ny n i (Visible = False), khi no ngi dng nhn phm phi chut bn s cho n hin ra bng method Popupmenu Trong chng trnh ta c th dng hnh vi (method) popupmenu gi mt menu hin th, menu ny phi c to trc (menu editor) v c t nht 1 mc chn con tc l menu th cp. C php: object.PopupMenu menuname, flags, x, y

Trong : object: tn form m trnh n s xut hin. Nu khng ghi c ngha l dng form hin hnh. menuname: tn menu cn hin th. flags: gi tr nguyn qui nh v tr xut hin ca menupopup.

Tn Hng vbPopupMenuLeftAlign vbPopupMenuCenterAlign vbPopupMenuRightAlign ... x,y

Gi Tr 0 4 8 ...

ngha Tr mc nh, cnh tri ca trnh n s v tr x. Trnh n s canh gia so vi v tr x. Cnh phi ca trnh n s v tr x. ... Ta trnh n s xut hin. Nu khng ghi mc nhin trnh n s xut hin v tr mouse

Sau y l mt th d v PopUp menu: M mt form trng v to 1 h thng menu nh hnh sau. Trong hnh menu chnh l Record (Name: mnuRec) vo c mt s menu con nh: Insert, Append, Edit, Delete.

"chp" c s kin nhn Mouse bn hy kho st tnh hung MouseDown ca form ny. G vo on Code sau: Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then ' Kim tra xem nt phi chut c b nhn khng PopupMenu mnuRec, 0 ' Cho hin th menu mnuRec End If End Sub

Nhn F5 chy th bn s c nh hnh bn. Nhng chng ta li khng mun ci menu ny lun xut hin s s trn form, hy cho n bin mt.

Bn ch cn cho ci menu "u n" mnuRec bin mt l cc menu con bn trong cng mt tch theo. Hy m hp thoi Menu Editor ra, click chn menu Record, b du check CheckBox Visible, click OK. H h by gi n bin mt tiu ri.

Nhn F5, chy th chng trnh, nhn nt phi chut... By gi th thnh cng ri hn. Hy p dng cch ny vo ng dng Visual Basic ca bn tin cho ngi dng.

Trong k ny: 1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa 3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box 5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV, AVI ?

1. Kim tra vic nhp liu vo TextBo 1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa 3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box 5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV ? Trong chng trnh nu bn c yu cu bt ngi dng phi nhp liu vo mi TextBox ang hin hu trn mt form thc hin mt vic no , song khng phi ai cng "vng li". bn cn kim tra xem ngi dng c nhp y thng tin vo cc TextBox cha. nhc cng phi kim tra tng ci mt (thng kim tra khi c s kin LostFocus), vi hm ny bn ch vic chuyn cho n mt tham s l Form cha cc TextBox cn kim tra, n c nhim v truy tm nhng TextBox cn trng v phi by ra mn hnh bng bng mt biu hin khc thng no . Hm ny nhn vo mt i s duy nht l Form (thng l form hin hnh "Me"), sau n s tm n tt c cc Textbox c trn form bng cch s dng cu lnh "For Each Control" nu c Textbox cn trng th i mu nn BackColor (mu hng), ng thi tr v mt gi tr kiu Boolean l True. Khng nhng l TextBox, nu l ComboBox vn b vng lp ny chiu c.

th hm ny bn hy to mt form, to vi chc ci TextBox (tn chi cng c) v mt CommandButton (name: cmdTextEmpty). G vo on Code sau: Private Sub cmdTestEmpty_Click() If IsEmpty(Me) Then MsgBox "Some textboxes are still empty" End If End Sub Function IsEmpty(Frm As Form) As Boolean Dim tmpControl As Control On Error Resume Next IsEmpty = False For Each tmpControl In Frm.Controls If Trim(tmpControl.Text) = "" Then If Err.Number = 0 Then IsEmpty = True tmpControl.BackColor = &HFFC0FF 'Mu hng End If Err.Clear Else

If tmpControl.BackColor = &HFFC0FF Then tmpControl.BackColor = QBColor(15)'Mu trng End If End If Next tmpControl End Function Nhn F5 chy chng trnh. By gi bn hy lm cho mt TextBox trng (vi ci cng c), sau click vo CommandButton, bn s thy cc TextBox trng b i mu thnh mu hng. Hy g vn bn vo cc TextBox mu hng , sau click ln CommandButton ln na, by gi th m ri, cc TextBox tr li bnh thng (nn trng).

2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa. 1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa 3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box 5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV ? Cc i tng loi ny gm c TextBox, Combobox. Sau y l cc on code dng chuyn i vn bn hin hu trong cc Control thnh ch hoa. Dng cho mt s i tng: + Cho combobox khng c drop down Dim hwndListbox As Integer Dim childhWnd As Integer hwndListbox = GetWindow(cbo1.hWnd, GW_CHILD) childhWnd = GetWindow(hwndListbox, GW_HWNDNEXT) lStyle = GetWindowLong(childhWnd, GWL_STYLE) lStyle = lStyle Or ES_UPPERCASE lRes = SetWindowLong(childhWnd, GWL_STYLE, lStyle) + Cho ComboBox c drop down childhWnd = GetWindow(cbo1.hWnd, gw_child)

lStyle = GetWindowLong(childhWnd, GWL_STYLE) lStyle = lStyle Or ES_UPPERCASE lRes = SetWindowLong(childhWnd, GWL_STYLE, lStyle) + Cho TextBox lStyle = GetWindowLong(Txt1.hWnd, GWL_STYLE) lStyle = lStyle Or ES_UPPERCASE lRes = SetWindowLong(Txt1.hWnd, GWL_STYLE, lStyle)

3. B qua mt s k t khi g vn bn trong TextBox 1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa 3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box 5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV ? Nu bn cn loi b mt s k t khi ngi dng g vn bn vo trong mt Textbox, thng l cc k t c bit nh: "!@#$%^&*()_+-=" . Sau y l mt gii php. Bng cch dng lin tc hm InStr mi khi c phm g (S kin KeyPress) Private Sub Text1_KeyPress(KeyAscii As Integer) Dim sTemplate As String sTemplate = "!@#$%^&*()_+-=" If InStr(1, sTemplate, Chr(KeyAscii)) > 0 Then KeyAscii = 0 End If End Sub

4. Xa cc mc chn (Item) trong Combo/List Box 1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa

3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box 5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV ? xa cc Item trong Combo box hay List box, bn cn phi duyt ngc, tc l t (ListCout-1) n 0. Sau y l mt th d minh ha. Bng cch dng vng lp For, km theo Step -1 duyt ngc. Sub cmdDeleteItems_Click () Dim i As Integer For i = List1.ListCount - 1 To 0 Step -1 If List1.Selected(i) Then List1.RemoveItem i End If Next i End Sub

5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa 3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box 5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV ? C ln no bn bc mnh v khng tm c thuc tnh no tt kh nng Wordwrap ca RichTextBox khng ? Tc l khng cho n t ct dng vn bn ca mnh mi khi chm cnh phi. Tm cng khng c, chc Bill qun to ri chng? Khng hiu ti sao khi sng tc ra RichTextBox, Bill khng chu lm lun cho n chc nng Wordwrap cho b con c th On/Off khi cn ? Khng bit l Bill c hay "l qun" khng to !?

Tht ra m ni RichTextBox khng c tnh nng Wordwrap d dng s dng trn Internet y m. Nhng suy cho cng chng ta c th nhanh chng gii ta hn ch ny bng cch gn cho thuc tnh RightMargin ca RichTextBox mt con s thit "b", i chao ng qu khim tn vi s 0 na ! Mt con s chng 100.000 cng c m, lc th kh nng Worwrap ca n b y i tut lut mt ni cch mn hnh ca bn gn 400m v pha phi. Vi mnh ny bn ch tht s i bi khi c dng vn bn di hn c thi. Bn cng ng qun cho hin th ScrollBar ngi dng d dng trong vic xem cc dng vn bn "c di" ca bn.

6. Thm mt dng mi vo cui TextBox ang cha vn bn

1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa 3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box 5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV ? Nu bn c nhu cu thm ngy thng vo cui mt vn bn sau khi hiu chnh, bit r c ngy cp nht cui cng ca mt ti liu no (thng gp trong cc chng trnh lm s tay, nht k... ). lm vic ny bn hy vn dng cc Properties: SelStart, SelText ca TextBox. Sau y l on code thm ngy thng vo cui vn bn trong TextBox Dim strNewText As String With Text1 strNewText = "Updated: " & Date .SelStart = Len(.Text) .SelText = vbNewLine & strNewText End With

7. Lm sao Shut down hay Reboot li Windows ? 1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa 3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box

5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV ? Trong Visual Basic 32bit. Khai bo hm API nh sau: Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Boolean Public Const EWX_SHUTDOWN = 1 Khi s dng bn ch vic: Dim success success = ExitWindowsEx(EWX_SHUTDOWN, 0) Nu thnh cng, hm ny s tr v True. + EWX_REBOOT = 2 s lm cho Windows 9.x Reboot + EWX_LOGOFF = 0 Log off. Vi phin bn 16bit Declare Function ExitWindows Lib "user" (ByVal wReturnCode as Long,ByVal dwReserved as Integer) as Integer Exit Windows: RetVal% = ExitWindows(0, 0) Exit & restart Windows: RetVal% = ExitWindows(&H42, 0) Exit Windows & restart the system: RetVal% = ExitWindows(&H43, 0)

8. Lm cho TEXTBOX tr thnh read only (cm ngi dng thay i ni dung) 1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa 3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box 5. Lm sao tt tnh nng Wordwrap ca Rich TextBox

6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV ? Nu bn s dng Visual Basic 5.0 tr ln th c thuc tnh Locked, nu gn l True th ngi dng khng th thay i ni dung ca TextBox (Read Only). C mt s kin cho rng, bn cn chp ly s kin KeyPress v KeyDown lm cho chng thnh zero. Tuy nhin, gii php tt nht vn l hm Windows API SendMessage. Global Const WM_USER = &H400 Global Const EM_SETREADONLY = (WM_USER + 31) Declare Function SendMessage Lib "User" (ByVal hWnd As Integer ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long SendMessage(Text1.hWnd, EM_SETREADONLY, 1, 0) Cch trn ngi s dng vn c th Copy ni dung. Nu cn bn thc s cn cm ngi dng Copy ni dung, bn c th loi b t hp phm Ctrl-C bng cch "n nh" khi xy ra s kin KeyPress.

9. M file vi chng trnh lin kt (associated program) 1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa 3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box 5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV ? Hm Shell() hi b bt tin v ch gi c chng trnh trc tip t file exe. Khng ging nh Windows, th d nh khi double click ln file DOC s m Microsoft Word, file TXT s m Notepad. Bn cng c th vit mt Module to cc mi lin kt nh vy trong Visual Basic d dng trong vic gi cc ng dng. Cc khai bo API #IF WIN32 THEN Private Declare Function ShellExecute Lib "shell32.dll" Alias _ "ShellExecuteA" ByVal hwnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Declare Function GetDesktopWindow Lib "user32" () As Long

#ELSE Declare Function ShellExecute Lib "SHELL" (ByVal hwnd%, _ ByVal lpszOp$, ByVal lpszFile$, ByVal lpszParams$, _ ByVal lpszDir$, ByVal fsShowCmd%) As Integer Declare Function GetDesktopWindow Lib "USER" () As Integer #END IF Private Const SW_SHOWNORMAL = 1 Hm phc v vic khi ng Function StartDoc(DocName As String) As Long Dim Scr_hDC As Long Scr_hDC = GetDesktopWindow() StartDoc = ShellExecute(Scr_hDC, "Open", _ DocName, "", "C:\", SW_SHOWNORMAL) End Function Kim chng chng trnh Private Sub Form_Click() Dim r As Long r = StartDoc("c:\mydoc\myletter.doc") Debug.Print "Return code from Startdoc: "; r End Sub 10. Lm sao Play cc file: MID, WAV ? 1. Kim tra vic nhp liu vo TextBox 2. Chuyn i k t trong cc i tng c kh nng hiu chnh (Editbox) thnh ch hoa 3. B qua mt s k t khi g vn bn trong TextBox 4. Xa cc mc chn (Item) trong Combo/List Box 5. Lm sao tt tnh nng Wordwrap ca Rich TextBox 6. Thm mt dng mi vo cui TextBox ang cha vn bn 7. Lm sao Shut down hay Reboot li Windows ? 8. Lm cho TEXTBOX tr thnh read only hoc cm ngi dng thay i ni dung 9. M file vi chng trnh lin kt (associated program) 10. Lm sao play cc file: MID, WAV ? Bng cch s dng MCI ca Windows Declare Function mciExecute Lib "MMSystem" (ByVal FileName as String) As Integer

Private Sub Form1_Click () iResult = mciExecute("Play c:\windows\mkmyday.wav") End Sub Tng t nh vy, bn c th dng cch ny Play mt file MIDI. Cn y l cch Play mt file AVI Private Declare Function mciExecute Lib "WINMM.DLL" (ByVal lpstrCommand as String) as Long Private Sub Form_Click() iResult = mciExecute("Play E:\Luu\AVI\Search.avi") End Sub Nu mun ngng, n gin bn ch cn thay t Play thnh Stop l c. Chc bn thnh cng

Nhng cu hi v Visual Basic


1. Ghi cc thit t vo Registry Chng ta s dng hm GetSetting & lnh SaveSetting thc hin nhim v ny. V tr ghi c gi tr ca chng trong Registry nm : HKEY_CURRENT_USER\Software\VB and VBA Program Settings * Hm GetSetting: Dng c mt tr t Registry. C c php nh sau: GetSetting(appname, section, key[, default]) Trong : AppName: Ni m hm ny s tm n c, thng nn t l tn ca ng dng. Bt buc c. Section: Trong mt AppName bn c th to nhiu Section khc nhau, mi Section lu tr mt nhm thng tin c lin quan vi nhau d qun l (ging nh to th mc con vy). Bt buc c.

Key: Trong mi Section bn c th to nhiu key, mi key lu 1 tr. Bt buc c. Default: Tr mc nhin mi khi khng tm thy Key cn c trong Registry. Tham s ny c th c hay khng cng c. Nu khng c tr mc nhin s l mt chui rng (""). * Lnh SaveSetting: Ghi thng tin vo Registry. SaveSetting appname, section, key, setting Cc thng s tng t nh hm GetSetting nhng khng c i s Default. Nhng li c i s Setting l tr s c ghi vo Registry cho mi Key. Bn hy xem hnh bit r hn cch t chc cc thng tin ca Registry & cch ghi cc thit t ca lnh SaveSetting.

Cc tr c lu trong Registry Th d minh ha: Lu trng thi ca form trc khi thot Trng thi hin th ca form bao gm: Maximize, Minimize, Normal, Top, Left, Width, Height. Mt v tr thun tin nht lu cc thng s trn l Registry ca Windows. Vy gi li trng thi ca form th khi form pht sinh s kin Unload bn hy ghi li cc thng s v trng thi. Khi m form bn ch cn c li cc thng s lu tr. Vy l ta c th gi li c trng thi form trc . th d ti s minh ha cch lu li vi tr ca Form. Hy khi ng VB & to 1 project mi, c 1 form tn l Form1, g vo code sau y: Option Explicit Private Sub Form_Load() On Error Resume Next 'Dng ny hy g sau. Me.Left = GetSetting("ChuongTrinh_ViDu", "ViTriForm", "X") Me.Top = GetSetting("ChuongTrinh_ViDu", "ViTriForm", "Y") End Sub Private Sub Form_Unload(Cancel As Integer) SaveSetting "ChuongTrinh_ViDu", "ViTriForm", "X", Me.Left SaveSetting "ChuongTrinh_ViDu", "ViTriForm", "Y", Me.Top End Sub

By gi bn cho chy th chng trnh, khi chng trnh chy bn hy th di chuyn form i ni khc, dng chng trnh, sau cho chy li, bn s thy form xut hin ngay ng v tr m n nm trc khi thot. Vo Registry kim nghim

Tuy nhin khi th chng trnh bn s thy bo li, l do l cha c thng tin trong Registry c vo 2 properties Left & Top khi chy ln u. khc phc li ny bn c th dng n tr Default ca hm GetSetting. Ring ti, ti chn cch t thm dng On Error Resume Next vo dng u tin ca s kin Form_Load. 2. Lm cho chng trnh ging trang Web Nu bn cm thy qu chn chng vi my ci nt lnh Command Button, xin hy to cho chng trnh ca mnh nhng siu lin kt (Hyper Links) ging nh trang Web. Cch lm cc k d: Hy dng mt Label Box, t mt Caption thch hp, ri sau m ty x l da trn ci s kin Mouse_Move ca n. V du nh khi r mouse n th dng Text trong Labelbox c gch chn bn lm nh sau: To project mi, c Form tn l Form1, trn t mt Labelbox tn l Label1. M ca s code g vo on code sau: Option Explicit Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single) Label1.FontUnderline = False End Sub Single, Y As

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Label1.FontUnderline = True End Sub Qua on code trn ta c nhn xt sau:

- Khi mouse c r n Label1 th pht sinh s kin mouse_move trn Label ny lm cho dng Text ca n b gch chn (nh l Hyper link th thit). - Khi mouse cn trn form, lun lun xy ra s kin mouse trn form v Label1 b gn thuc tnh FontUnderline=False. Do ta s thy khi mouse ri khi Labelbox tc th Text ca n ht b gch chn ngay.

Khi mouse cn trn Form

Khi mouse c r trn Labelbox Tuy nhin 1 Hyper link nh vy cn hi nht nho thiu rt nhiu "hng sc Web". Bn c th cho n thm vi thay i na nh: m ln (FontBold) In nghing (Font Italic) i Font ch (FontName) i mu ch (ForeColor) i mu nn (BackColor) i biu tng chut (Mouse Icon). Nh t MousePointer l Custom - 99

Cn rt nhiu th xin mi bn.

3. Lm sao m trnh Browser & Mail mc nh ca Windows ? Bn khai bo hm API sau: Private Declare Function ShellExecute Lib "shell32.dll" Alias _ "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As _ String, ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Khi no cn dng ch vic gi hm

Dim ret& ret& = ShellExecute(Me.hwnd, "Open", "http://ilpweb.itgo.com", "", App.Path, 1) Nu mun gi Mail bn ch cn thay a ch Web thnh "mailto:email@site.com" l c ri Chc bn thnh cng 4. ng dn ca i tng DirListbox v App Hy hy lu thuc tnh Path ca 2 i tng ny. Th d nh bn cn tham chiu n mt tp tin tn l Test.txt nm trong th mc ca chng trnh (gi s App.path == c:\myapp). app.path & "\Test.txt" ==> c:\myapp\Test.txt Nhng nu App.path ca bn l mt th mc gc ca bt k a no, v d nh c:\ th n li thnh. app.path & "\Test.txt" ==> c:\\Test.txt Chng trnh s bo li ngay lp tc. Tng t nh vy i tng DirListBox cng b trng hp ny. L do l 2 i tng ny tr v cho thuc tnh Path cc trng hp sau: Nu khng phi l th mc gc th: Tn a:\Tn th mc - v d C:\TEMP Nhng nu l th mc gc th li Tn a:\ - vi d C:\

Khi lp trnh tng qut ta hay vit l App.path & "\Test.txt" Dir1.path & "\" & File1.Filename Nh vy ta thy d 1 du \ khi l th mc gc. gii quyt li ny bn c th dng hm IIF() hoc cu lnh IF C th ti c th vit nh sau: Dim F as String F = Dir1.path & IIF(Len(Dir1.path)=3,""," ") & File1.FileName Hay If Len(Dir1=3) then F = Dir1.path & File1.FileName else

F = Dir1.path & "\" & File1.FileName End If Chc bn thnh cng.

Nhng cu hi v Visual Basic


Ly tham s truyn t dng lnh. Ly cc biu tng ca s. Thu nh chng trnh sau khi dch bng NeoLite 2.0 1. Ly tham s truyn t dng lnh VB cung cp cho ta hm Command() hay Command$(). Hm ny tr v mt String m bn truyn vo t dng lnh khi gi chng trnh. Lu : Hm Command$() mi thc s tr v mt String cn Command() li tr v mt Variant V d: Hnh bn di cho thy ta khi ng chng trnh MyPad.exe & truyn cho n mt tham s l C:\WINDOWS\WIN.INI

By gi chng ta hy th ly tham s qua mt chng trnh vit bng VB. Ta s vit mt chng trnh tn MYPAD, c mt form, trn c mt TextBox. Nu khi chy chng trnh ngi dng khng truyn tham s th TextBox trng (hoc cha mt thng bo). Cn ngc li th kim tr xem c phi l ng dn n mt tp tin hay khng (tp tin vn bn), nu ng th hin th ni dung file vo TextBox. i vi TextBox bn phi t thuc tnh Multiline = TRUE. ScrollBars l 2-Vertical hay 3-Both Double Click ln form to code cho s kin FormLoad nh sau: Private Sub Form_Load() Dim sFile As String Dim nd As String, dong As String

nd = "" : dong = "" sFile = Command$() If Dir$(sFile) <> "" And sFile <> "" Then Open sFile For Input As #1 Do While Not EOF(1) Line Input #1, dong nd = nd + dong + vbCrLf Loop Close #1 Text1 = nd Caption = "MyPad - " & sFile Else Text1 = "Tp tin: [" & sFile & "] khng tm thy." & vbCrLf & "Hoc khng cho ng dn file." End If End Sub cho Textbox (Text1) lc no cng c kch thc bng vi form, bn hy g code sau vo s kin FormResize. Private Sub Form_Resize() Text1.Left = 0 : Text1.Top = 0 Text1.Width = ScaleWidth : Text1.Height = ScaleHeight End Sub By gi bn hy cho chy th chng trnh & truyn cho n mt tham s m file WIN.INI Click Start / Run & g vo D:\MYPAD\MyPad.exe C:\WINDOWS\WIN.INI (Gi s chng trnh MyPad ca ti lu trn D:\MYPAD), sau click OK. Chng trnh MyPad ca chng ta chy & hin th ni dung ca WIN.INI trong Textbox.

Nu bn cho chy MYPAD m khng cho tham s hoc cho sai chng trnh s hin th nh sau:

V y ch l mt chng trnh th d n gin minh cho cch nhn tham s t dng lnh, cho nn bn phi ch l file (ng dn file) m bn truyn cho n khng c c thuc tnh n, nu khng n s bo l khng tm thy. V u trang 2. Ly cc biu tng chun ca ca s trong Windows Nu bn c nhu cu t vit ly mt ca s cho mnh th chc chn bn s cn cc k t sau y.

Windows dng font tn l Marlett th hin cc k t ny. Mun th hin cc k t ny bn g cc k t t 0 n 9 & t a n y, sau chn font l Marlett. T bn c th tm thy biu tng mnh cn. Chng trnh sau y s th hin cc biu tng : - Bn hy to 1 Project mi - To mt Textbox (Text1) & mt CommandButton (Command1) t Caption cho nt ny l "Marlett"

- Nhp on Code sau y vo Form1 ri chy th Option Explicit Private Sub Form_Load() Text1.FontName= "Tahoma" Text1.FontSize = 20 Text1.Text = "0123456789" & vbCrLf & _ "abcdefghijkl" & vbCrLf & "mnopqrtusxy" End Sub Private Sub Command1_Click() Text1.FontName = "Marlett" End Sub Khi chng trnh chy bn s thy cc k t xut hin bnh thng vi font Tahoma.

Nhng khi click vo nt Marlett th kt qu nh hnh sau y.

Rt tuyt phi khng bn, nh vy nu cn biu tng no bn c th dng ngay m khng phi mt cng v li. V u trang 3. Thu nh kch thc tp tin exe sau khi dch chng trnh. Sau khi dch chng trnh thnh file exe nu thy file ny hi ln, bn c th dng chng trnh NeoLite nn n li cho nh bt. Chng trnh c th nn cc file sau:

NeoLite dng nn cc chng trnh 32 bit ca Windows (.EXE, .DLL v .OCX). Sau khi nn chng trnh ny vn chy bnh thng nh khi cha nn, ngi dng kh m pht hin c s thay i do tc ca chng trnh gn nh khng h suy gim. Ch c 1 s khc bit duy nht l file nn nh ch bng 60% lc u do tit kim c mt lng ng k khong trng ca chng trnh trc khi phn phi n ngi dng.

- NeoLite c 2 mc nn: nn c kh nng phc hi & nn vnh vin (khng phc hi c, ty chn ny cho t l nn cao hn). - Khng nhng thu nh kch thc m vic nn c th bo v cho chng trnh, trnh c vic dch ngc (de-compilers, dis-assemblers). - Khng c g m bo file sau khi nn cn chy tt trm phn trm, cho nn bn phi cn thn khi s dng, c bit l phi sao lu trc khi nn.

* C ch nn ca NeoLite: Khi NeoLite nn mt chng trnh n s ghp mt module c bit ca chnh mnh vi module ca file chng trnh c nn, module c bit ca NeoLite c gi l loader program (xem hnh). Khi file chng trnh ny c triu gi, loader program s chy trc v m nn module ca chng trnh nn trc tip vo b nh v cho thc thi nh mt chng trnh bnh thng.

Mi s ta nhn th vn c tng din ra bnh thng, nhng tht ra ng sau hu trng m i y, chng trnh cn phi tn cht thi gian t m nn chnh n trc khi np vo b nh, khong thi gian ny ln hay nh l cn ty thuc vo kch thc thc ca file chng trnh & tc x l ca my tnh.

Cng hc lp trnh VISUAL BASIC


Bai viet su dung Font UNICODE NI DUNG NHNG CU HI V VISUAL BASIC K 10 -------------1. ng m khay a CD-ROM 2. Ty bin Command Button 3. M hp thoi Browse for Folder ng m khay a CD-Rom Bn c mun vit mt tin ch ng m khay a CD-Rom cho ring mnh khng ? Nn bn c th vi dng code sau y s gip bn toi nguyn. Lu : Chng trnh ny ch tc dng ti CD u tin trn h thng ca bn ( c tn gn vi tn Partition cui cng ca my).

- To mt Project mi. - Khai bo hm API sau trong Form1. Option Explicit Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hWndCallback As Long) As Long To thm hm vbmciSendString() nhn thng ip ng/m khay CDROM. Hm ny tr v mt String. Function vbmciSendString(ByVal Command As String, ByVal hWnd As Long) As String Dim Buffer As String Dim dwRet As Long Buffer = Space$(100) dwRet = mciSendString(Command, ByVal Buffer, Len(Buffer),hWnd) vbmciSendString = Buffer End Function BACK | FORWARD To ln lt 2 Command Button v t Caption cho chng l: "Open" & "Close". Sau y l m tng ng cho 2 nt lnh . Private Sub Command1_Click() Dim Dummy As String Dummy = vbmciSendString("set cdaudio door open", 0) End Sub Private Sub Command2_Click() Dim Dummy As String Dummy = vbmciSendString("set cdaudio door closed ", 0) End Sub Nh vy Command1 dng m khay CD, cn Command2 th ng khay. Hy save li & cho chy th chng trnh xem. Hy p dng nhng th thut ca cc bi trc thit k cho chng trnh chy thng tr trong Windows, th hin thnh 1 Icon System Tray tin s dng. Nht nh n s hu ch khi bn lm bing th tay nhn nt Eject hoc ci nt qui qu khng cn tc dng. Ring ti ci tin ch ny cc k tin, do ci thng my (CPU) ti t di gm bn, mun ly CD ra phi khom ngi nhn nt, ri ch (mt hai giy thi cng lm ti nng rut). Vi tin ch ch vic click chut khi no nghe ting khay bung ra .... tht tin li. u trang

Ty bin Command Button Command Button l 1 trong nhng control thng dng nht trong Windows ni chung & trong VB ni ring. Mt chng trnh n gin no hu nhng cng c i tng ny. Tuy vy n cng c nhng vng mt ch chng phi n gin u. Sau y l vi thc mc ca mt bn t hc VB. Ti mun ph bin cng cc bn ang t hc VB khc. Cu hi 1: Ti sao khi ti thay i mu BackColor ca Command Button thnh mt mu khc (mu mc nhin ca Windows) nhng n vn tr nh , chng thy thay i theo s la chn ca ti. Tr li: Command Button ch thay i mu Backcolor khi thuc tnh Style ca n c t l 1-Graphical m thi. Mc nhin l 0-Standard. iu ny cng tng t nh thuc tnh Picture, khi bn gn mt hnh nh cng phi gn cho thuc tnh Style l 1-Graphical th bc nh mi hin ln, nu khng th chng thy thay i g. Cu hi 2: Lm sao thay i mu TextColor (Mu ca dng Text trn Command Button - Caption) ca Command Button ? Tr li: Trong ch Design ca VB khng c thuc tnh no cho php ta thay i mu TextColor, v khi thi hnh chng trnh cng vy. Ni tm li trong mi trng pht trin ca VB bn khng th no thay i mu TextColor ca Command Button c. Do vy ta phi tm mt hng khc. Ti xin ngh 2 cch sau y: * Custom Control: Bn c th t thit k, iu ny i hi bn phi c kh nng to ActiveX (cng to bng VB). Hay bn c th tm nhng ActiveX c thit k sn, v b sung vo ng dng ca mnh (Internet l ni chc chn bn phi tm n, nu khng c iu kin, hy lc li trn cc CD free code bn cc ca hng). Nhng theo ti bit, trong b VB 4 (Version 32bit) c mt custom control tn l Sheridan 3D Controls (THREED32.OCX) bn c th d dng tm tm thy hn. Bao gm cc i tng sau: SSCheck SSFrame SSPanel SSRibon SSCommand v SSOption

Bao gm rt nhiu thuc tnh cho php ta chn mu sc, c c thuc tnh cho php gn hiu ng cho Text na. Tht l th. Xem th giao din * T v ly Command Button: Cch ny th ai cng c th lm, nhng p hay

xu l do ph thuc vo kh nng v ca bn. Cch lm nh sau: T bn v mt nt lnh, hnh dng kch thc mu sc ty bn. Bng cc chng trnh ha (hay dng ngay Paint ca Windows cng c). Lu li bc nh di dng Bitmap (*.bmp). Tht ra vi VB6 bn c th dng format: bmp, jpg, gif ... Cn VB4 ch dng bmp m thi. Gn vo thuc tnh Picture ca command button. Lu : Bn phi t cho thuc tnh Style l 1-Graphical & Caption l trng (khng t g c).

Ti c lm mt th d n gin minh ha

Bc nh gif c v bng cc chng trnh v thng dng.

Button th nht l do ti v, button th hai l ca VB (khng th thay i mu cho Text c). Bn hy so snh. C ngi cho rng bn c th t mt Picture vo Image control gi lm button, nhng theo ring ti cch ny khng hay, v khi t hnh nh trong Image lc ngi dng Click chut s khng cm thy b ln xung nh l cch t hnh nh vo Command Button ca ti mi trnh by. u trang Lm sao hin th hp thoi BROWSE FOR FOLDER ? Trong lc vit ng dng, c lc bn ch cn cho ngi dng chn th mc (nu chn tp tin th c Dialog Open ri). Lc ny bn nn cho hin th hp thoi "Browse for Folder" l tin nht. Sau y l cch thc hin:

Hy khi ng VB. To Project mi G on Code sau y vo mt Module. Private Type BrowseInfo hwndOwner As Long pIDLRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long lpfnCallback As Long lParam As Long iImage As Long End Type Private Const BIF_RETURNONLYFSDIRS = 1 Private Const MAX_PATH = 260 Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long) Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal

pidList As Long, ByVal lpBuffer As String) As Long Public Function BrowseForFolder(hwndOwner As Long, sPrompt As String) As String Dim iNull As Integer Dim lpIDList As Long Dim lResult As Long Dim sPath As String Dim udtBI As BrowseInfo With udtBI .hwndOwner = hwndOwner .lpszTitle = lstrcat(sPrompt, "") .ulFlags = BIF_RETURNONLYFSDIRS End With lpIDList = SHBrowseForFolder(udtBI) If lpIDList Then sPath = String$(MAX_PATH, 0) lResult = SHGetPathFromIDList(lpIDList, sPath) Call CoTaskMemFree(lpIDList) iNull = InStr(sPath, vbNullChar) If iNull Then sPath = Left$(sPath, iNull - 1) End If BrowseForFolder = sPath End Function Trn Form to mt Command Button (Name: Command1), g on code sau vo s kin Click. Private Sub Command1_Click() Dim strResFolder As String strResFolder = BrowseForFolder(hWnd, "Select Folder.") If strResFolder <> "" Then MsgBox strResFolder End If End Sub Kt qu chn ca ngi dng c t vo bin strResFolder. Bn hy p dng vo ng dng ca mnh khi c nhu cu.

Chc bn thnh cng. Nhng cu hi v VB 1. Kim tra s tn ti ca tp tin t dng code ny vo tp tin .BAS (module) v c th gi n t bt k u trong chng trnh ca bn. Function FileExists(Byval FileName As String) Dim Exist As Integer On Local Error Resume Next Exists = Len(Dir(FileName$)) On Local Error Goto 0 If Exists = 0 Then FileExists = False Else FileExists = True End If End Function Hm ny s nhn tham s l mt String (chnh l ng dn n file cn kim tra s tn ti). Tr v mt tr kiu Boolean (TRUE/FALSE), phn nh kt qu kim tra ca hm. 2. S dng phm Enter nh l phm Tab lun chuyn gia cc Control trn Form Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then 'Bt phm Enter SendKeys "{TAB}" 'Gi nh ngi dng nhn Tab KeyAscii = 0 'Hu phm Enter End If End Sub Nh t thuc tnh KeyPreview ca Form l TRUE bn nh ( cho Form n cc phm nhn trc cc Control trn n, nu khng bn s nghe ting Beep trong loa ch chng thy tc dng g u). 3. Lm cho Form thnh TopMost L form lun nm trn tt c cc ca s khc mc d n khng b kch hot (Active). Khai bo hm API SetWindowPos trong Module nh sau: #If Win32 Then Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Global success As Long

#Else Declare Function SetWindowPos Lib "user" (ByVal hWnd As Integer, _ ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal Y As _ Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As _ Integer) As Integer Global success As Integer #End If Khai bo thm mt s hng cn thit trong Module: Global Const SWP_NOMOVE = 2 Global Const SWP_NOSIZE = 1 Global Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE Global Const HWND_TOPMOST = -1 Global Const HWND_NOTOPMOST = -2 Lc no mun cho Form thnh TopMost th dng on code sau y: success = SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS) Nh vy khi mun Form khng TopMost na th: success = SetWindowPos(Me.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS) minh ha, bn hy to mt Project mi. - Trn Form1 to 2 command button l: Command1 & Command2, Add thm 1 Module (Module1). - Khai bo hm API & cc hng trong Module1. - Ln lt t dng code th nht cho Command1 (TOPMOST) success = SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS) - V dng code th 2 cho Command2 (NOTOPMOST). success = SetWindowPos(Me.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS) - Lc ny hy ung dung m nhn F5 chy th. 4. Hy to Form mu cho ring mnh C bao gi bn t hi: "Lm sao to ring cho mnh mt ci Form (ca chnh mnh) v add n vo Menu ca VB khi cn cho lnh Add Form l c th chn vo ng dng ca mnh ngay lp tc ?". Ging nh cc mu c sn ca Vb vy .

Bn thy khng ? About Dialog, Dialog, Splash Screen, Tip of the Day ... cc th ny bn u c th ti ring cho mnh chng trnh mang mt sc thi ring, c o, v bt ng. Hy to ra nhng Form tht ng bng cch: - Thay i cc Properties - Thm mt s Control cn thit - v ci g bn thch hoc hay dng - G c Source Code nu cn. Save Form vo th mc Template\Forms ca th mc cha chng trnh VB (nh l ch cn Form thi nh, khng cn ti Project u). V d nh: C:\soft\Microsoft Visual Studio\VB98\Template\Forms Sau bn hy vo mc Add Form xem

Lu : Tn File chnh l tn s xut hin trong danh sch ny. V d hnh bn di l file "Day la mau Form cua tui.frm" Nu bn "d ng" vi ci mu Form no c sn ca VB bn c th cho n mt tch bng cch Delete (hoc Move i ni khc) tp tin tng ng vi tn l xong.

V hy nhn xem

ng ght ch l n lun cho Form ca chng ta va to vo cui danh sch, du bn t tn c c trm ch "a" i na th cng "i s" nh thng. Thi k, c cng dzui ri, ng u cng c min li hi hn l OK h ( khng, Open mi chnh xc). NHNG CU HI V VB 1. Ct bt cc khong trng trong chui Khi g vn bn hoc nhp liu, khng phi ngi dng no cng "tt lnh" m g chnh xc tng cu ch, v c bit l cc khong trng (space). C khi trong 1 chng trnh, nu tha mt khong trng s dn n li nghim trng khing chng trnh treo ... "tng teng". trnh rc ri , ta cn vit mt Module c nhim v r sot trong chui, h thNong chui, h thN tha khong trng th b ngay, sau mi a chui x l xong cho chng trnh thc hin cng vic chnh. C th chng trnh hot ng mi trn tru. Hm sau y s lm nhim v: - Thay th ni no c nhiu khong trng trong chui thnh 1 khong trng duy nht. - Xo b lun cc khong trng u hoc cui chui. Private Function PreventDuplicateSpaces(Word) Dim i, WordLength, Character, LastCharacter, NewWord On Error GoTo ErrorHandler WordLength = Len(Word) For i = 1 To WordLength Character = Mid(Word, i, 1) If LastCharacter = " " And Character = " " Then Else NewWord = NewWord & Character LastCharacter = Character End If Next i PreventDuplicateSpaces = Trim(NewWord) Exit Function ErrorHandler: ' Chn code cn x l khi xut hin li. End Function Lu : y ch l 1 cch minh ho (mc hiu qu trung bnh), bn c th t vit hm cho ring mnh, hoc m rng hm trn lm thm 1 s chc nng khc. 2. V hiu (Disable) tt c cc Control trn Form

Dim i As Integer For i = 0 To Form1.Controls.Count - 1 Form1.Controls(i).Enabled = False Next i Dng code trn s lm cho tt c cc loi Control (k c menu) trn Form b v hiu (thuc tnh Enable = False).

Tht tuyt vi phi khng bn. Rt nhanh & cc k gn, nhng bn phi thn trng khi s dng nh. Nh vy vic cho Enable li cc i tng trn Form cng rt l d phi khng ? ^Top 3. Gi cho TextBox lun b cun xung cui vn bn Khi s dng hoc chiu di ca vn bn ln hn phm vi "thy c" ca Textbox. Lc ny nu bn c nhu cu lun gi cho Textbox hin th cc dng cui vn bn, hy dng mo sau: Text1.SelStart = Len(Text1.Text)

p t thuc tnh SelStart ca Textbox l chiu di ca vn bn ang cha. Hy triu gi dng code trn bt c khi no bn cp nht hoc thay i ni dung ca Textbox. d hiu, chng ta s cng lm mt th d n gin sau:

- Hy to mt Project mi, trn Form1 c 2 Textbox (Name: Text1, & Text2) & 1 Command Button (Name: Command1). - t thuc tnh ca Text1: MultiLine = True; ScrollBars = 2-Vertical - Cc control cn li hy gi nguyn: - t vi dng code vo Form: Private Sub Command1_Click() ' Ni dng vn bn trong Text2 vo cui Text1 (c ghp thm k t xung dng vbCrLf - bn c th dng chr(13) & chr(10) ) Text1 = Text1 & vbCrLf & Text2 End Sub Private Sub Text1_Change() 'Cun Textbox khi c s thay i Text1.SelStart = Len(Text1) End Sub Cn cch th nh th no ? Qu d, hy g g vo Text2, nhn Command1, dng Text s c cp nht ln Text1, c th t dng th t tr i bn s thy ngay iu cn thy.

K t dng th t tr i Text1 lun c cun xung pha di ngi dng c th xem c thng tin va mi cp nht.

Trn thc t bn ch c t dng Text1.SelStart = Len(Text1) vo tnh hung Change ca Textbox, v n s lm cho bn kh khn khi nh v Cursor v sa i mt ch khc trong TextBox. Hy sng to & t vo nhng ch (lc) thch hp. 4. t Picture vo Status Bar (thanh trng thi) Thanh trng thi l mt trong nhng i tng chun mc c hu ht trong cc chng trnh chuyn nghip. Thanh trng thi c nhim v hng dn cho ngi dng bng nhng gii thch ngn gn. Click phi chut ln i tng Status Bar, chn mc Properties trong menu tt. Click chn th Panels. V thm vo mt panel mi. Trong khung Picture, click nt Browse, sau hy chn mt bc nh m bn thch.

Xem hnh minh ho

Cc Format m VB h tr l: Bimaps Icons & Cursors GIF Images JPEG Images

Tuy nhin bn nn dng nhng bc nh nh cho ph hp vi thanh Status. 5. t Default Folder cho Visual Basic 5/6 C khi no bn cm thy rt bc mnh v mi khi pht lnh Save trong VB n li cho vo th mc ci VB khng ? Ring ti, bc mnh lm, ti khng bao gi lu d liu trn cng 1 da vi cc chng trnh Windows c, thit pht khng mi khi phi lm ci thao tc chuyn i th mc nhm chng y. Ti c gng tm kim thay i th mc mi khi pht lnh Save. Nhng v cng tht vng, chng c bt k mt Version ca no c.

Tuy nhin nh Windows nn ti c th gii quyt c vn ny kh d dng. Nu ang s dng Windows t 98 tr i bn c th lm nhanh nh sau: - Click phi chut ln Shortcut ca VB trong menu Programs, chn Properties.

Xem hnh minh ho

- Sau bn s c hp thoi Properties. Ch phn Start in cha th mc mc nh lc ta ci VB.

Xem hnh minh ho

- Vy mun nh hy i th mc trong Start in li nh bn mun: Gi s ti i thnh: H:\MYDOC\VBSOFT vy l t y khi pht lnh Save trong VB ti s c toi nguyn.

Xem hnh minh ho

Bn thy mt tnh hung kh n gin, nu khng bit ta s tn rt nhiu thi gian. Tng t nh vy, nu bn khi ng VB t mt Shortcut khc (v d nh trn Desktop) th bn vn lm y nh vy.

You might also like