ViÕt Code cho menu

Ta chØ cÇn viÕt code cho menu, sau ®ã dïng c¸c nót lÖnh ®Ó gäi menu t­¬ng øng.

B©y giê chóng ta viÕt code cho môc Windows Explorer trong menu Windows. Vµo Windows chän  Windows Explorer ®Ó viÕt code cho môc chän menu nµy.

B¹n gâ vµo ®o¹n sau:

Private Sub mnuWE_Click() ' dßng nµy cã s½n

Dim P
P = Shell("explorer", vbNormalFocus)

End Sub ' dßng nµy cã s½n

Gi¶i thÝch:

* Dim P

Khai b¸o 1 biÕn kiÓu variant ®Ó chøa trÞ tr¶ vÒ cña hµm Shell. §©y lµ kiÓu d÷ liÖu bao trïm tÊt c¶ c¸c kiÓu d÷ liÖu trong Visual Basic.

* P=Shell("explorer",vbNormalFocus)

Hµm Shell dïng ®Ó gäi mét ch­¬ng tr×nh kh¸c thi hµnh

Có ph¸p Shell(pathname[,windowstyle])

pathname: lµ ®­êng dÉn vµ file thùc thi cña ch­¬ng tr×nh cÇn gäi. §©y lµ 1 x©u cho nªn khi viÕt b¹n ph¶i ®Æt chóng trong cÆp dÊu " " míi ®óng.

windowstyle: lµ h»ng sè qui ®Þnh phong c¸ch khi khëi ®éng cña ch­¬ng tr×nh cÇn ch¹y. ThÝ dô: sau khi gäi ch­¬ng tr×nh b¹n cÇn Maximize, Minimize ch­¬ng tr×nh ®ã ... c¸c h»ng cã gi¸ trÞ vµ ý nghÜa nh­ sau:

Tªn h»ng

Gi¸ trÞ

ý nghÜa

vbHide 0 Window is hidden and focus is passed to the hidden window.
vbNormalFocus 1 Window has focus and is restored to its original size and position.
vbMinimizedFocus 2 Window is displayed as an icon with focus.
vbMaximizedFocus 3 Window is maximized with focus.
vbNormalNoFocus 4 Window is restored to its most recent size and position. The currently active window remains active.
vbMinimizedNoFocus 5 Window is displayed as an icon. The currently active window remains active.

VËy cã thÓ viÕt l¹i hµm Shell nh­ sau Shell("explorer",1) cho gän

L­u ý: Trong phÇn pathname cña hµm shell lý ra ph¶i ghi ®Çy ®ñ ®­êng dÉn, thÝ dô
"C:\Windows\Explorer.exe" (gi¶ sö th­ môc windows lµ c:\windows) thay v× "explorer.exe". Së dÜ ta cã thÓ ghi gän nh­ vËy lµ v× Windows tù ®éng ®Æt d­êng dÉn path ®Õn c¸c th­ môc nh­: Windows; Windows\system. Do ®ã chØ cÇn ghi explorer.exe cho tæng qu¸t (khái sî sai ®­êng dÉn khi ®em ch¹y trªn m¸y kh¸c).

B©y giê nhÊn F5 ®Ó ch¹y ch­¬ng tr×nh, vµo menu Windows chän Windows Explorer, lËp tøc ch­¬ng tr×nh Windows Explorer ®­îc khëi ®éng.

T­¬ng tù nh­ vËy b¹n cã viÕt code cho tÊt c¶ c¸c menu con cßn l¹i cña menu Windows.

Notepad.exe (Windows/Notepad)

Write.exe (Windows/WordPad)

Pbrush.exe (Windows/Paint)

§èi víi Paint vµ WordPad ta ph¶i dïng 2 file write.exe & pbrush.exe trong th­ môc Windows ®Ó khëi ®éng. Thùc ra 2 file nµy chØ cã chøc n¨ng gäi WordPad.exe vµ MSPaint.exe (trong th­ môc \Program Files\Accessories\) chø kh«ng ph¶i lµ file ch­¬ng tr×nh chÝnh. Microsoft ph¶i lµm vËy ®Ó t­¬ng thÝch víi c¸c ch­¬ng tr×nh cò.

Cßn c¸c môc chän kh¸c b¹n còng viÕt hµm Shell t­¬ng tù nh­ng ®­êng dÉn ph¶i cô thÓ vµ chÝnh x¸c. ThÝ dô ®Ó viÕt code cho menu "Lac Viet td". Vµo VietNamese / Lac Viet td, gâ vµo

Private Sub mnuLV_Click()

Dim F
F=Shell("d:\tools\lvtd\lvtd.exe",1)

End Sub

Do file lvtd.exe cña m¸y t«i n»m trong th­ môc d:\tools\lvtd

NhÊn F5 ch¹y thö xem cã võa ý hay kh«ng ?

ViÕt code cho c¸c Command Button

B©y giê ta viÕt lÖnh cho c¸c CommandButton t­¬ng øng. Yªu cÇu lµ viÕt code sao cho khi nhÊn vµo nót Windows th× menu Windows t­¬ng øng sÏ hiÖn ra nh­ h×nh minh häa

VËy ph¶i viÕt lÖnh cho nót

+ Windows (cmdWin) gäi menu Windows (mnuWin)
+ Application (cmdApp) ---> mnuApp
+ VietNamese (cmdVN) ---> mnuVN

Double click vµo cmdWin (hay Right click chän View code tõ menu popup), gâ vµo

Private Sub cmdWin_Click()

popupmenu mnuWin

End Sub

Gi¶i thÝch:

popupmenu mnuWin hµnh vi (method) popupmenu dïng ®Ó hiÓn thÞ menu cã tªn mnuWin

Xem có ph¸p popupmenu

T­¬ng tù cho 2 nót lÖnh cßn l¹i. Khi ch¹y thö ch­¬ng tr×nh b¹n click vµo nót lÖnh nµo sÏ xuÊt hiÖn menu t­¬ng øng. Tõ ®©y ng­êi dïng cã thÓ chän lÖnh tõ menu popup hay menu pulldown (menu kÐo xuèng) ®Òu ®­îc.

ViÕt lÖnh cho nót Exit nh­ sau:

Private Sub cmdExit_Click()
    End
End Sub

Lµm cho ch­¬ng tr×nh tù ®éng tho¸t

§èi t­îng Timer

NÕu ®ang ë chÕ ®éng tù ®éng tho¸t (môc Unload after 20 Sec ®­îc chän) sau 20 gi©y ch­¬ng tr×nh sÏ tù ®éng tho¸t, kh«ng cÇn chóng ta can thiÖp. §Ó lµm ®­îc viÖc nµy ta ph¶i dïng Timer vµ  Picture box (picIns, picOut) ®· t¹o tõ tr­íc.

Sau khi ch­¬ng tr×nh khëi ®éng hoÆc khi check vµo checkbox. Mçi gi©y ®é réng hiÖn t¹i cña picIns céng víi ®é réng cña picOut/20 (v× 20 gi©y), cho ®Õn khi ®é r«ng cña picIns = picOut th× dõng ch­¬ng tr×nh. NÕu kh«ng check chøc n¨ng tù ®éng tho¸t kh«ng ho¹t ®éng.

Chóng ta tiÕn hµnh viÕt code cho c¸c ®èi t­îng nh­ sau

T×nh huèng Form_Load() sÏ ®­îc kÝch ho¹t khi ch­¬ng tr×nh khëi ®éng, timer ho¹t ®éng víi trÞ interval = 1000 (t­¬ng ®­¬ng 1 gi©y), ®é réng picIns ban ®Çu lµ 0.

Private Sub Form_Load()
    Timer1.Interval = 1000
    PicIns.Width = 0
End Sub

Khi ng­êi dïng Click vµo check box. NÕu cã chän sÏ lµm cho timer ho¹t ®éng t­¬ng tù nh­ Form_Load(), nÕu kh«ng chän th× cho timer ngõng.

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

KiÓm tra xem ®é réng picIns >= picOut hay kh«ng. NÕu cã, kÕt thóc ch­¬ng tr×nh (End), nÕu kh«ng tiÕp tôc t¨ng ®é réng picIns theo chu kú mçi gi©y 1 lÇn. 

Private Sub Timer1_Timer()
If PicIns.Width >= PicOut.Width Then
    End
Else
    PicIns.Width = PicIns.Width + PicOut.Width / 20
End If
End Sub

Ch¹y thö ch­¬ng tr×nh xem nã cã tù ®éng tho¸t kh«ng. Thö click vµo check box xem cã ho¹t ®éng nh­ mong muèn ch­a.

T« son ®iÓm phÊn

Thªm vµi lêi nh¾c nhì

Chóng ta cßn sãt 1 ®èi t­îng lµ lblMsg (Label box) ch­a sö dông ®Õn. Label box nµy ta dïng ®Ó in c©u th«ng b¸o h­íng dÉn mçi khi ng­êi dïng rª Mouse qua c¸c Command Button.

ThÝ dô nh­: Khi rª mouse trªn nót Windows th× c©u th«ng b¸o sÏ lµ "C¸c øng dông chuÈn cña Windows" ch¼ng h¹n. §Ó lµm ®­îc ®iÒu nµy ta h·y kh¶o s¸t t×nh huèng MouseMove cña ®èi t­îng, cô thÓ lµ cña Command Button vµ Form. Right click vµo nót Windows, chän View code, chän t×nh huèng 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

HiÓn thÞ c©u th«ng b¸o Run Windows Utilities (Accessories group) trong lblMsg khi mouse di chuyÓn trªn nót Windows. Mét c¸ch t­¬ng tù b¹n cã thÓ lµm cho c¸c button cßn l¹i.

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

HiÓn thÞ c©u th«ng b¸o Please, select a program to start your work. trong lblMsg khi mouse di chuyÓn phÝa trªn form

Khi ch¹y ch­¬ng tr×nh, b¹n thö rª mouse lªn c¸c button sÏ thÊy néi dung cña lblMsg thay ®æi liªn tôc (hiÓn thÞ c¸c c©u th«ng b¸o cña chÝnh b¹n).

Lµm sao ®Ó form khëi ®éng ë gi÷a mµn h×nh

§èi víi Visual Basic version 5 & 6, th× chuyÖn nµy rÊt dÔ nh­ng cã vÎ bÝ hiÓm. B¹n chØ cÇn right click lªn cöa sæ Form Layout (nÕu ch­a hiÓn thÞ h·y bËt lªn b»ng c¸ch View\Form Layout Window) chän Startup Position, chän Center Screen lµ xong ngay.

Kh«ng nh÷ng thÕ, b¹n cßn cã thÓ tù hiÖu chØnh vÞ trÝ form sÏ hiÓn thÞ trªn mµn h×nh khi ch¹y mét c¸ch rÊt trùc quan. Cßn nÕu b¹n kho¸i thñ c«ng, h·y thªm dßng lÖnh nµy vµo t×nh huèng FormLoad cña form cÇn canh gi÷a mµn h×nh nh­ sau.

Private Sub Form_Load()
    Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
End Sub

C¸ch nµy ¸p dông cho mäi phiªn b¶n cña Visual Basic.

Cuèi cïng b¹n chØ dÞch ra file EXE ®Ó ch¹y.

Chóc b¹n thµnh c«ng !


NguyÔn Hå Thiªn §¨ng, 03 th2 2002 05:51 CH
thdang@tlnet.com.vn


PcLeHoan 1996 - 2002
Mirror : http://www.pclehoan.com
Mirror : http://www.lehoanpc.net

Mirror : http://www.ktlehoan.com