Nh÷ng c©u hái vÒ Visual Basic
(K
y 8)
Xem bai viet bang font Unicode


1. Ghi c¸c thiÕt ®Æt vµo Registry

Chóng ta sÏ dïng hµm GetSetting & lÖnh SaveSetting ®Ó thùc hiÖn nhiÖm vô nµy. VÞ trÝ ghi ®äc gi¸ trÞ cña chóng trong Registry n»m ë: HKEY_CURRENT_USER\Software\VB and VBA Program Settings

* Hµm GetSetting: Dïng ®Ó ®äc mét trÞ tõ Registry. Cã có ph¸p nh­ sau:

GetSetting(appname, section, key[, default])

Trong ®ã: 

AppName: N¬i mµ hµm nµy sÏ t×m ®Õn ®Ó ®äc, th­êng nªn ®Æt lµ tªn cña øng dông. B¾t buéc cã.

Section: Trong mét AppName b¹n cã thÓ t¹o nhiÒu Section kh¸c nhau, mçi Section l­u tr÷ mét nhãm th«ng tin cã liªn quan víi nhau ®Ó dÔ qu¶n lý (gièng nh­ t¹o th­ môc con vËy). B¾t buéc cã.

Key: Trong mçi Section b¹n cã thÓ t¹o nhiÒu key, mçi key l­u 1 trÞ. B¾t buéc cã.

Default: TrÞ mÆc nhiªn mçi khi kh«ng t×m thÊy Key cÇn ®äc trong Registry. Tham sè nµy cã thÓ cã hay kh«ng còng ®­îc. NÕu kh«ng cã trÞ mÆc nhiªn sÏ lµ mét chuçi ræng ("").

* LÖnh SaveSetting: Ghi th«ng tin vµo Registry.

SaveSetting appname, section, key, setting

C¸c th«ng sè t­¬ng tù nh­ hµm GetSetting nh­ng kh«ng cã ®èi sè Default. Nh­ng l¹i cã ®èi sè Setting lµ trÞ sÏ ®­îc ghi vµo Registry cho mçi Key.

B¹n h·y xem h×nh ®Ó biÕt râ h¬n c¸ch tæ chøc c¸c th«ng tin cña Registry & c¸ch ghi c¸c thiÕt ®Æt cña lÖnh SaveSetting.


C¸c trÞ ®­îc l­u trong Registry

ThÝ dô minh häa: L­u tr¹ng th¸i cña form tr­íc khi tho¸t

Tr¹ng th¸i hiÓn thÞ cña form bao gåm: Maximize, Minimize, Normal, Top, Left, Width, Height.  Mét vÞ trÝ thuËn tiÖn nhÊt ®Ó l­u c¸c th«ng sè trªn lµ Registry cña Windows.

VËy ®Ó gi÷ l¹i tr¹ng th¸i cña form th× khi form ph¸t sinh sù kiÖn Unload b¹n h·y ghi l¹i c¸c th«ng sè vÒ tr¹ng th¸i. Khi më form b¹n chØ cÇn ®äc l¹i c¸c th«ng sè ®· l­u tr÷. VËy lµ ta cã thÓ gi÷ l¹i ®­îc tr¹ng th¸i form tr­íc ®ã.

§Ó thÝ dô t«i sÏ minh häa c¸ch l­u l¹i vi trÝ cña Form. H·y khëi ®éng VB & t¹o 1 project míi, cã 1 form tªn lµ Form1, gâ vµo code sau ®©y:

Option Explicit

Private Sub Form_Load()
   
On Error Resume Next 'Dßng nµy h·y 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

B©y giê b¹n cho ch¹y thö ch­¬ng tr×nh, khi ch­¬ng tr×nh ch¹y b¹n h·y thö di chuyÓn form ®i n¬i kh¸c, dõng ch­¬ng tr×nh, sau ®ã cho ch¹y l¹i, b¹n sÏ thÊy form xuÊt hiÖn ngay ®óng vÞ trÝ mµ nã ®· n»m tr­íc khi tho¸t.

Vµo Registry ®Ó kiÓm nghiÖm

Tuy nhiªn khi thö ch­¬ng tr×nh b¹n sÏ thÊy b¸o lçi, lý do lµ ch­a cã th«ng tin trong Registry ®Ó ®äc vµo 2 properties Left & Top khi ch¹y lÇn ®Çu.

§Ó kh¾c phôc lçi nµy b¹n cã thÓ dïng ®Õn trÞ Default cña hµm GetSetting. Riªng t«i, t«i chän c¸ch ®Æt thªm dßng On Error Resume Next vµo dßng ®Çu tiªn cña sù kiÖn Form_Load.

2. Lµm cho ch­¬ng tr×nh gièng trang Web

NÕu b¹n c¶m thÊy qu¸ ch¸n ch­êng víi mÊy c¸i nót lÖnh Command Button, xin h·y t¹o cho ch­¬ng tr×nh cña m×nh nh÷ng siªu liªn kÕt (Hyper Links) gièng nh­ trang Web. C¸ch lµm cùc kú dÔ:

H·y dïng mét Label Box, ®Æt mét Caption thÝch hîp, råi sau ®ã mµ tïy ý xö lý dùa trªn c¸i sù kiÖn Mouse_Move cña nã.

VÝ du nh­ khi rª mouse ®Õn th× dßng Text trong Labelbox ®­îc g¹ch ch©n b¹n lµm nh­ sau:

T¹o project míi, cã Form tªn lµ Form1, trªn ®ã ®Æt mét Labelbox tªn lµ Label1. Më cöa sæ code gâ vµo ®o¹n code sau:

Option Explicit

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As      Single, Y As Single)
    Label1.FontUnderline = False
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Label1.FontUnderline = True
End Sub

Qua ®o¹n code trªn ta cã nhËn xÐt sau:

- Khi mouse ®­îc rª ®Õn Label1 th× ph¸t sinh sù kiÖn mouse_move trªn Label nµy lµm cho dßng Text cña nã bÞ g¹ch ch©n (nh­ lµ Hyper link thø thiÖt).

- Khi mouse cßn trªn form, lu«n lu«n x¶y ra sù kiÖn mouse trªn form vµ Label1 bÞ g¸n thuéc tÝnh FontUnderline=False. Do ®ã ta sÏ thÊy khi mouse rêi khái Labelbox tøc th× Text cña nã hÕt bÞ g¹ch ch©n ngay.

Khi mouse cßn trªn Form

Khi mouse ®­îc rª trªn Labelbox

Tuy nhiªn 1 Hyper link nh­ vËy cßn h¬i nh¹t nhÏo thiÕu rÊt nhiÒu "h­¬ng s¾c Web". B¹n cã thÓ cho nã thªm vµi thay ®æi n÷a nh­:

Cßn rÊt nhiÒu thø xin mêi b¹n.

3. Lµm sao ®Ó më tr×nh Browser & Mail mÆc ®Þnh cña Windows ?

B¹n khai b¸o hµm 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 nµo cÇn dïng chØ viÖc gäi hµm

Dim ret&
ret& = ShellExecute(Me.hwnd, "Open", "http://ilpweb.itgo.com", "", App.Path, 1)

NÕu muèn gäi Mail b¹n chØ cÇn thay ®Þa chØ Web thµnh "mailto:email@site.com" lµ ®­îc råi

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

4. §­êng dÉn cña ®èi t­îng DirListbox vµ App

H·y h·y l­u ý thuéc tÝnh Path cña 2 ®èi t­îng nµy. ThÝ dô nh­ b¹n cÇn tham chiÕu ®Õn mét tËp tin tªn lµ Test.txt n»m trong th­ môc cña ch­¬ng tr×nh (gi¶ sö App.path == c:\myapp).

app.path & "\Test.txt" ==> c:\myapp\Test.txt

Nh­ng nÕu App.path cña b¹n lµ mét th­ môc gèc cña bÊt kú æ ®Üa nµo, vÝ dô nh­ c:\ th× nã l¹i thµnh.

app.path & "\Test.txt" ==> c:\\Test.txt

Ch­¬ng tr×nh sÏ b¸o lçi ngay lËp tøc. T­¬ng tù nh­ vËy ®èi t­îng DirListBox còng bÞ tr­êng hîp nµy.

Lý do lµ 2 ®èi t­îng nµy tr¶ vÒ cho thuéc tÝnh Path c¸c tr­êng hîp sau:

Khi lËp tr×nh tæng qu¸t ta hay viÕt lµ

App.path & "\Test.txt"

Dir1.path & "\" & File1.Filename

Nh­ vËy ta thÊy d­ 1 dÊu \ khi lµ th­ môc gèc. §Ó gi¶i quyÕt lçi nµy b¹n cã thÓ dïng hµm IIF() hoÆc c©u lÖnh IF

Cô thÓ t«i cã thÓ viÕt 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

Chóc b¹n thµnh c«ng. T«i lu«n mong nhËn ®­îc thËt nhiÒu ý kiÕn ®ãng gãp ®Ó hoµn thiÖn c¸c bµi viÕt sau.


NguyÔn ThÞ Thanh Ph­¬ng ilphuong@vol.vnn.vn


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

Mirror : http://www.ktlehoan.com