thdang@tlnet.com.vn

Tù t¹o Progress Bar cho øng dông Visual Basic

[Combo box tù hiÖn danh s¸ch] [Form Layout]

NÕu c¸c b¹n dïng c¸c phiªn b¶n Enterprise - 32bit cña Visual Basic, th× cã s½n 1 Custom control cho phÐp b¹n t¹o nhanh mét Progress bar theo mèt cña Windows 9.x tr«ng rÊt ®¬n s¬ nh­ng chuÈn mùc

Cßn ë ®©y t«i xin tr×nh bµy c¸ch tù chÕ Progress bar b»ng c¸c control chuÈn cña Visual Basic (Picture box), c¸ch nµy ®Æc biÖt h÷u Ých cho c¸c b¹n cßn dïng phiªn b¶n vb 16bit hay kh«ng muèn v¸c theo file COMCTL.OCX (MSCOMCTL.OCX) kÝch th­íc trªn d­íi 1Mb kÌm theo øng dông cña m×nh.

B¹n h·y t¹o 2 Picture box lång vµo nhau, di chuyÓn vÞ trÝ Picture box bªn trong, chän mµu s¾c cho thÝch hîp. Cßn ®Ó nã ch¹y ®­îc ­ ? b¹n h·y t¨ng (hoÆc gi·m) ®é réng cña Picture box bªn trong, cùc ®¹i khi ®é réng Picture box bªn trong = bªn ngoµi, cùc tiÓu khi ®é réng Picture box bªn trong = 0.


PhÝa trªn lµ ®å xÞn, phÝa d­íi lµ hµng tù chÕ.

B¹n thÊy kh«ng còng ngang ng÷a chí bé, kh«ng nh÷ng thÕ hµng tù t¹o cßn cho phÐp chóng ta thay ®æi mµu s¾c mét c¸ch v« t­, muèn xanh ®á tÝm vµng ®Òu ®­îc c¶, vÒ kh¶ n¨ng nµy th× ®å xÞn rÊt khã thùc hiÖn nÕu kh«ng muèn nãi lµ kh«ng ®­îc.

§Ó minh häa t«i ®· dïng mét Timer (Timer1) vµ 2 Picture box (Picture1 vµ Picture2), Picture2 mµu xanh n»m trong Picture1 mµu x¸m. Cïng víi ®o¹n 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 gi©y tr«i qua råi ®Êy !"
End

End If

End Sub

Khi ch¹y thö ch­¬ng tr×nh b¹n sÏ thÊy Progress bar cña chóng ta thay ®æi mçi gi©y 1 lÇn, cho ®Õn hÕt 20 gi©y, th«ng b¸o b»ng hµm MsgBox nÕu b¹n click OK th× nã goodbye b¹n lu«n.

Lµm thÕ nµo ®Ó 1 combo box tù ®éng hiÖn danh s¸ch khi nhËn ®­îc focus, mµ kh«ng cÇn ng­êi dïng click chuét ?

[Tù t¹o Progress bar] [Form Layout]

Combo box dÔ thÊy nhÊt trong c¸c th¶o tr×nh lµ hép chän font nh­ h×nh d­íi ®©y.

§Ó lµm ®­îc viÖc nµy, b¹n cÇn nhí l¹i tæ hîp phÝm t¾t ®Ó më mét combo box trong Windows lµ ALT - DownArrow (Mòi tªn xuèng). Do ®ã ta chØ cÇn lµm sao cho combo box nhËn ®­îc tæ hîp phÝm ALT + DownArrow lµ ªm chuyÖn.

RÊt dÔ dµng b¹n h·y cho lÖnh Sendkeys gëi 1 tæ hîp phÝm ALT - DownArrow tõ thñ tôc t×nh huèng GotFocus cña Combo box cÇn më.

H·y t¹o 1 form míi trªn ®ã t¹o mét control nµo ®ã vÝ dô nh­ CommandButton, kÕ ®Õn b¹n h·y t¹o 1 Combo box. Lý do b¹n ph¶i t¹o Command button tr­íc ®Ó cho nã cã focus tr­íc (TabIndex = 0), khi ch¹y ch­¬ng tr×nh b¹n h·y nhÊn phÝm Tab ®Ó chuyÓn focus sang cho combo box, lóc nµy b¹n sÏ thÊy rÊt râ t¸c dông cña lÖnh SendKeys.

Private Sub Combo1_GotFocus()

SendKeys "%{DOWN}"

End Sub

C©u lÖnh SendKeys "%{DOWN}" dïng ®Ó gëi tæ hîp phÝm ALT - DownArrow lªn Combo box khi chÝnh nã nhËn ®­îc Focus do ng­êi sö dông dÞch chuyÓn b»ng phÝm Tab hay b»ng Mouse. SÏ lµm cho combo box tù ®éng më ra (hiÖn danh s¸ch).

Thñ thuËt nµy h÷u Ých khi b¹n viÕt c¸c øng dông cã yªu cÇu nhËp d÷ liÖu, th­êng th× ng­êi dïng nhËp d÷ liÖu b»ng bµn phÝm, sau ®ã nhÊn phÝm Tab ®Õn mét combo box, nã sÏ bung ra ngay ®Ó ng­êi dïng chän lùa, rÊt tiÖn dông, khiÕn cho ng­êi ta c¶m thÊy rÊt hµi lßng vÒ ch­¬ng tr×nh cña m×nh.

Cöa sæ Form Layout dïng ®Ó lµm g× ?

[Tù t¹o Progress bar] [Combo box tù hiÖn danh s¸ch]

§©y lµ mét trong nh÷ng tÝnh n¨ng míi cña Visual Basic 5 & 6, gióp cho lËp tr×nh viªn dÔ dµng ph©n bè c¸c form trªn mµn h×nh khi ch­¬ng tr×nh thùc thi mét c¸ch rÊt trùc quan. Vµo View \ Form Layout Windows, hay click vµo Icon trªn toolbar ®Ó hiÓn thÞ cöa sæ Form Layout nÕu ch­a xuÊt hiÖn.

§Ó sö dông c¸c chøc n¨ng trªn cöa sæ nµy, b¹n h·y right click trªn cöa sæ ®Ó bËt menu Popup gåm c¸c môc chän sau:

Resolution Guides: HiÓn thÞ ®é ph©n gi¶i mµn h×nh (chØ hiÓn thÞ c¸c ®é ph©n gi¶i thÊp h¬n ®é ph©n gi¶i mµ mµn h×nh ®ang sö dông).

Dockable: HiÓn thÞ Form Layout b»ng mét cöa sæ riªng hay n»m chung víi c¸c cöa sæ Project, Properties.

Hide: ®ãng cöa sæ Form Layout.

Startup Position: VÞ trÝ form hiÓn thÞ trªn mµn h×nh

Manual: Tù b¹n thiÕt lËp, b»ng c¸ch rª form cã tªn t­¬ng øng, vµ dùa vµo c¸c Resolution Guides ®Ó biÕt râ vÞ trÝ form sÏ xuÊt hiÖn trªn mµn h×nh khi ch¹y ch­¬ng tr×nh.

Center Owner: N»m gi÷a form ®· gäi nã.

Center Screen: N»m gi÷a mµn h×nh ë bÊt kú ®é ph©n gi¶i nµo.

Windows Default: Theo chuÈn cña Windows, n»m h¬i chÖch vÒ gãc tr¸i trªn cña mµn h×nh.

Mçi form trong giai ®o¹n thiÕt kÕ, muèn hiÓn thÞ trªn cöa sæ Form Layout b¹n ph¶i më form ®ã lªn, nã sÏ xuÊt hiÖn trªn cöa sæ Form Layout b»ng tªn t­¬ng øng, vÞ trÝ thùc cña nã sÏ xuÊt hiÖn trªn mµn h×nh lóc ch¹y ®­îc ph¶n ¶nh rÊt chÝnh x¸c trong cöa sæ nµy.

X­a nay ng­êi ta cã quan niÖm lµ ng«n ng÷ lËp tr×nh Visual Basic "bÞ yÕu" h¬n c¸c ng«n ng÷ kh¸c do kh«ng cã c¸c hµm, thñ tôc can thiÖp ®Õn c¸c th«ng tin cÊp thÊp cña hÖ thèng nh­ ng«n ng÷ C. Nh­ng còng chÝnh Visual Basic ®· bï vµo sù thiÕu hôt ®¸ng tiÕc cña m×nh b»ng c¸ch liªn kÕt vµ sö dông c¸c hµm API (Application Programmer's Interface) cã s½n trong Windows qua c©u lÖnh Declare. Gióp cho ta lµm ®­îc khèi viÖc t­ëng chõng nh­ v« väng. ThËt ra c¸c hµm API nµy ®­îc t¹o ra b»ng ng«n ng÷ C do ®ã ta cã thÓ tËn dông ®­îc c¸c kh¶ n¨ng cña C trong Visual Basic. C¸c hµm API tån t¹i d­íi d¹ng file cã phÇn më réng lµ DLL hay EXE trong th­ môc System. ¥ë c¸c bµi viÕt sau chóng ta sÏ cïng nhau t×m hiÓu vÒ c¸c API tuyÖt vêi nµy. Mét øng dïng Visual Basic viÕt ®µng hoµng, ch¹y ngon lµnh th× ®è ai nh×n mµ biÕt ®­îc b¹n viÕt b»ng ng«n ng÷ nµo (b¹n l­u ý chØ cho ng­êi ta nh×n th«i nhÐ).

[Tù t¹o Progress bar] [Combo box tù hiÖn danh s¸ch] [Form Layout]


NguyÔn Hå Thiªn §¨ng 03 th2 2002 05:52:56 CH


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

Mirror : http://www.ktlehoan.com