Xem bai viet bang font Unicode

thphuong@saigon.vnn.vn

Trong kú nµy:

1. KiÓm tra sù tån t¹i cña file ë bÊt kú ®©u
2. KiÓm tra ®é ph©n gi¶i mµn h×nh
3. Import file reg vµo registry
4. Sù kh¸c nhau khi load  form ë chÕ ®é MODAL & MODELESS
5. Khi nµo, t¹i sao ph¶i dïng Option Explicit
6. T¹o menu PopUp


1. KiÓm tra sù tån t¹i cña file ë bÊt kú ®©u

2. KiÓm tra ®é ph©n gi¶i mµn h×nh
3. Import file reg vµo registry
4. Sù kh¸c nhau khi load  form ë chÕ ®é MODAL & MODELESS
5. Khi nµo, t¹i sao ph¶i dïng Option Explicit
6. T¹o menu PopUp

§Ó gi÷ cho øng dông cña b¹n su«n sÎ khi ch¹y tr¸nh tr­êng hîp bÞ lçi ch­¬ng tr×nh vµ ngõng mét c¸ch "bÊt hîp ph¸p", nÕu ng­êi gÆp lçi lµ chÝnh b¹n th× kh«ng cã g×, nh­ng nÕu ng­êi gÆp lçi kh«ng ph¶i lµ b¹n,  b¹n sÏ bÞ "mÊt mÆt" v× ch­¬ng tr×nh cña m×nh. Cô thÓ h¬n, trong qu¸ tr×nh lµm viÖc víi file, b¹n cÇn ph¶i lu«n kiÓm tra file cã tån t¹i hay kh«ng tr­íc khi thùc hiÖn mét t¸c vô ghi ®äc nµo ®ã. D­íi ®©y lµ mét ch­¬ng tr×nh con dïng ®Ó kiÓm tra, ®èi sè duy nhÊt lµ ®­êng dÉn file cÇn më.

Public Sub VerifyFile(FileName As String)

      '

      On Error Resume Next

      'Më file thö ®Ó kiÓm 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

B¹n h·y ®Æt nã vµo mét module ®Ó sö dông cho toµn ch­¬ng tr×nh.

NÕu qu¸ tr×nh kiÓm tra diÔn ra tèt ®Ñp th× kh«ng cã g×, nÕu cã trôc trÆc b¹n sÏ thÊy mét MsgBox xuÊt hiÖn, nhê bÉy lçi, ch­¬ng tr×nh cña chóng ta vÉn ho¹t ®éng tiÕp tôc. B©y giê b¹n h·y t¹o mét form míi, thªm vµo mét CommandButton (Name: cmdVerify), gâ vµo ®o¹n Code cho t×nh huèng Click(), nhÊn F5 ch¹y thö. Víi ch­¬ng tr×nh con nh­ vËy b¹n cã thÓ gäi nã ®Ó kiÓm tra sù tån t¹i cña file trong ch­¬ng tr×nh.

Private Sub cmdVerify_Click()

      '

      Call VerifyFile("MyFile.txt")

      '

End Sub


2. KiÓm tra ®é ph©n gi¶i mµn h×nh

1. KiÓm tra sù tån t¹i cña file ë bÊt kú ®©u
3. Import file reg vµo registry
4. Sù kh¸c nhau khi load  form ë chÕ ®é MODAL & MODELESS
5. Khi nµo, t¹i sao ph¶i dïng Option Explicit
6. T¹o menu PopUp

NÕu ch­¬ng tr×nh cña b¹n cã ®ßi hái ph¶i ch¹y trong mét ®é ph©n gi¶i mµn h×nh nhÊt ®Þnh nµo ®ã, b¹n cã thÓ dïng c¸ch sau ®©y ®Ó kiÓm tra ®é ph©n gi¶i cña mµn h×nh cã thÝch hîp víi ch­¬ng tr×nh cña m×nh kh«ng, råi sau ®ã míi ch¹y.

Hµm CheckRez(réng, cao) nhËn vµo 2 tham sè lµ chiÒu réng vµ cao cña mµn h×nh (tÝnh b»ng Pixel) tr¶ vÒ mét gi¸ trÞ kiÓu Boolean (True/False). NÕu tr¶ vÒ True cã nghÜa lµ ®é ph©n gi¶i mµn h×nh ®ang sö dông thÝch hîp víi ®é ph©n gi¶i b¹n cÇn kiÓm tra. 

Vd: CheckRez(800,600) = True

Do Visual Basic sö dông ®¬n vÞ lµ Twip mµ b¹n l¹i sö dông lµ Pixel cho nªn ph¶i cã sù chuyÓn ®æi ®¬n vÞ.

Public Function CheckRez(pixelWidth As Long, _
pixelHeight As Long) As Boolean

    '

    Dim lngTwipsX As Long

    Dim lngTwipsY As Long

    '

    ' chuyÓn ®æi tõ  pixels sang twips

    lngTwipsX = pixelWidth * 15

    lngTwipsY = pixelHeight * 15

    '

    ' kiÓm tra l¹i ®é réng vµ cao cña mµn h×nh

    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, b¹n h·y dïng c©u lÖnh if cïng víi ®iÒu kiÖn kiÓm tra lµ hµm CheckRez ë ®o¹n m· b¾t ®Çu cña ch­¬ng tr×nh.

    If CheckRez(640, 480) = False Then

       MsgBox "Incorrect screen size!"

    Else

        MsgBox "Screen Resolution Matches!"

    End If


3. Inport mét file Registry (*.reg)

1. KiÓm tra sù tån t¹i cña file ë bÊt kú ®©u
2. KiÓm tra ®é ph©n gi¶i mµn h×nh
4. Sù kh¸c nhau khi load  form ë chÕ ®é MODAL & MODELESS
5. Khi nµo, t¹i sao ph¶i dïng Option Explicit
6. T¹o menu PopUp

NÕu b¹n cÇn Import mét file reg vµo Registry mµ kh«ng muèn lµm bËn t©m ®Õn ng­êi dïng. B¹n h·y ch¹y Regedit víi th«ng sè /s kÌm theo sau lµ tªn file vµ ®­êng dÉn file reg cÇn Import vµo 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

Víi c¸ch nµy file reg cña b¹n sÏ ®­îc Merge vµo Registry mét c¸ch ©m thÇm, kh«ng ai hay biÕt.

Vµ ®­¬ng nhiªn b¹n còng cã thÓ gâ trùc tiÕp nh­ vËy vµo hép tho¹i run cña Windows.


4. Sù kh¸c nhau khi load form ë chÕ ®é MODAL vµ MODELESS

1. KiÓm tra sù tån t¹i cña file ë bÊt kú ®©u
2. KiÓm tra ®é ph©n gi¶i mµn h×nh
3. Import file reg vµo registry
5. Khi nµo, t¹i sao ph¶i dïng Option Explicit
6. T¹o menu PopUp

Nh÷ng Form ®­îc load ë chÕ ®é MODAL th­êng cã yªu cÇu b¾t buéc vµ chê ng­êi dïng nhËp d÷ liÖu tr­íc khi thi hµnh c¸c lÖnh kh¸c trong cïng mét thñ tôc (Sub / Function). Form lo¹i nµy th­êng gi÷ focus cña ch­¬ng tr×nh cho ®Õn khi nã ®­îc ng­êi dïng "gi¶i t¸n". Khi hiÓn thÞ form ë chÕ ®é nµy, c¸c lÖnh kh«ng thuéc form ®ang hiÓn thÞ sÏ kh«ng ®­îc thùc hiÖn, mµ ph¶i chê cho ®Õn khi form nµy ®­îc ®ãng l¹i. C¸c MsgBox, InputBox chÝnh lµ mét d¹ng cña Modal form. §Ó hiÓn thÞ form ë chÕ ®é nµy b¹n dïng có ph¸p lÖnh sau:

MyForm.SHOW vbModal

Khi load form ë chÕ ®é MODELESS c¸c lÖnh sÏ ®­îc lÇn l­ît thùc hiÖn mét c¸ch b×nh th­êng tõ trªn xuèng d­íi trong mét thñ tôc (kh«ng cÇn ng­êi dïng ph¶i quan t©m, ®Ó tõ tõ råi xem còng ®­îc). c¸c MDI child lu«n ë d¹ng modeless. §Ó hiÓn thÞ form ë chÕ ®é modeless b¹n dïng lÖnh:

MyForm.SHOW


5. T¹i sao ph¶i dïng Option Explicit?

1. KiÓm tra sù tån t¹i cña file ë bÊt kú ®©u
2. KiÓm tra ®é ph©n gi¶i mµn h×nh
3. Import file reg vµo registry
4. Sù kh¸c nhau khi load  form ë chÕ ®é MODAL & MODELESS
6. T¹o menu PopUp

NÕu dßng Option Explicit xuÊt hiÖn trong cöa sæ code cña ch­¬ng tr×nh còng cã nghÜa lµ Vb b¾c buéc b¹n ph¶i khai b¸o biÕn mét c¸ch t­êng minh tr­íc khi sö dông chóng. MÖnh ®Ò Option Explicit ®­îc ®Æt ë dßng ®Çu tiªn trong cöa sæ Code (General Declaration). Qu¶ thËt viÖc b¾t buéc ph¶i khai b¸o biÕn sÏ lµm cho ch­¬ng tr×nh râ rµng, gi¶m thiÓu tèi ®a c¸c sai sãt ngoµi ý muèn (bugs) do kh¶ n¨ng tù ph¸t sinh biÕn míi mµ kh«ng cÇn khai b¸o cña Visual Basic . §©y còng lµ con dao 2 l­ìi, theo t«i tÝnh n¨ng nµy h¹i nhiÒu h¬n lµ lîi.

B¹n cã thÓ gâ trùc tiÕp mÖnh ®Ò Option Explicit hay nhê VB tù ®éng thªm gióp b»ng c¸ch vµo Tools / Options. Check vµo Require Variable Declaration trong thÎ (tab) Editor.

Option Explicit sÏ v« hiÖu kh¶ n¨ng tù ph¸t sinh biÕn cña Vb. Nh­ vËy, tÊt c¶ c¸c biÕn muèn sö dông ®Òu ph¶i khai b¸o b»ng tõ khãa DIM hay REDIM, biÕn nµo ch­a ®­îc khai b¸o VB sÏ th«ng b¸o lçi vµ b¾t b¹n ph¶i khai b¸o míi ch¹y ®­îc ch­¬ng tr×nh. KiÓu d÷ liÖu mÆc nhiªn mµ mçi lÇn Visual Basic (Basic) t¹o biÕn míi lµ Variant.

6. T¹o menu PopUp

(THIEN DANG)

1. KiÓm tra sù tån t¹i cña file ë bÊt kú ®©u
2. KiÓm tra ®é ph©n gi¶i mµn h×nh
3. Import file reg vµo registry
4. Sù kh¸c nhau khi load  form ë chÕ ®é MODAL & MODELESS
5. Khi nµo, t¹i sao ph¶i dïng Option Explicit

Trong øng dông ngoµi lo¹i menu kÐo xuèng (PullDown) cßn mét lo¹i menu n÷a kh¸ linh ®éng gäi lµ menu PopUp. Lo¹i menu nµy b¹n rÊt th­êng sö dông trong Windows 9.x, ®­îc kÝch ho¹t b»ng phÝm ph¶i chuét. Mét øng dông Windows hoµn chØnh ch¹y trong Windows 9.x kh«ng thÓ kh«ng cã lo¹i menu cÊp tèc nµy.

Trong Visual Basic lo¹i menu nµy thËt ra còng lµ mét menu PullDown b×nh th­êng mµ th«i. Khi nµo cÇn hiÖn thµnh menu PopUp b¹n chØ viÖc gäi tªn menu t­¬ng øng (Name cña Menu). §Ó cho thµnh menu PopUp thø thiÖt b¹n h·y cho menu nµy Èn ®i (Visible = False), khi nµo ng­êi dïng nhÊn phÝm ph¶i chuét b¹n sÏ cho nã hiÖn ra b»ng method Popupmenu

Trong ch­¬ng tr×nh ta cã thÓ dïng hµnh vi (method) popupmenu ®Ó gäi mét menu hiÓn thÞ, menu nµy ph¶i ®­îc t¹o tr­íc (menu editor) vµ cã Ýt nhÊt 1 môc chän con tøc lµ menu thø cÊp.

Có ph¸p: object.PopupMenu menuname, flags, x, y

Trong ®ã:

object: tªn form mµ tr×nh ®¬n sÏ xuÊt hiÖn. NÕu kh«ng ghi cã nghÜa lµ dïng form hiÖn hµnh.

menuname: tªn menu cÇn hiÓn thÞ.

flags: gi¸ trÞ nguyªn qui ®Þnh vÞ trÝ xuÊt hiÖn cña menupopup.

Tªn H»ng

Gi¸ TrÞ

ý nghÜa

vbPopupMenuLeftAlign  0  TrÞ mÆc ®Þnh, c¹nh tr¸i cña tr×nh ®¬n sÏ ë vÞ trÝ x.
vbPopupMenuCenterAlign  4  Tr×nh ®¬n sÏ canh gi÷a so víi vÞ trÝ x.
vbPopupMenuRightAlign 8 C¹nh ph¶i cña tr×nh ®¬n sÏ ë vÞ trÝ x.
... ... ...
x,y   Täa ®é tr×nh ®¬n sÏ  xuÊt hiÖn. NÕu kh«ng ghi mÆc nhiªn tr×nh ®¬n sÏ xuÊt hiÖn ë vÞ trÝ mouse

Sau ®©y lµ mét thÝ dô vÒ PopUp menu:

Më mét form trèng vµ t¹o 1 hÖ thèng menu nh­ h×nh sau. Trong h×nh menu chÝnh lµ Record (Name: mnuRec) vµo cã mét sè menu con nh­: Insert, Append, Edit, Delete.

§Ó "chép" ®­îc sù kiÖn nhÊn Mouse b¹n h·y kh¶o s¸t t×nh huèng MouseDown cña form nµy. Gâ vµo ®o¹n Code sau:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 2 Then
' KiÓm tra xem nót ph¶i chuét cã bÞ nhÊn kh«ng

PopupMenu mnuRec, 0
' Cho hiÓn thÞ menu mnuRec

End If

End Sub

NhÊn F5 ch¹y thö b¹n sÏ ®­îc nh­ h×nh bªn. Nh­ng chóng ta l¹i kh«ng muèn c¸i menu nµy lu«n xuÊt hiÖn sê sê trªn form, h·y cho nã biÕn mÊt.

B¹n chØ cÇn cho c¸i menu "®Çu ®µn" mnuRec biÕn mÊt lµ c¸c menu con bªn trong còng mÊt tÝch theo. H·y më hép tho¹i Menu Editor ra, click chän menu Record, bá dÊu check ë CheckBox Visible, click OK. Hµ hµ b©y giê nã biÕn mÊt tiªu råi.

NhÊn F5, ch¹y thö ch­¬ng tr×nh, nhÊn nót ph¶i chuét... B©y giê th× thµnh c«ng råi hÐn. H·y ¸p dông c¸ch nµy vµo øng dông Visual Basic cña b¹n ®Ó tiÖn cho ng­êi dïng.

HÑn gÆp l¹i ë bµi viÕt kú sau.


chuÒ nhâòt, thaìng hai 03, 2002 06:33:57 CH
 
NGUYEN THI THANH PHUONG
thphuong@saigon.vnn.vn


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

Mirror : http://www.ktlehoan.com