Comment créer un lien hypertexte sur mon form ?
La première étape consiste à placer un contrôle label, avec :
- Font.Underline égal à True,
- Forecolor égal à vbBlue (ou &H00FF0000&),
- AutoSize égal à True.
Ensuite, il vous faudra gérer l'événement click du contrôle afin d'ouvrir
votre page web dans le navigateur par défaut. Pour ce faire, il suffit
d'employer l'API ShellExecute :
Option Explicit
' Déclarations :
Private Const SW_SHOWNORMAL = 1
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
' Evénement Click du Label :
Private Sub Label_Click()
ShellExecute Me.hwnd, "open",
"http://faq.vb.free.fr/", vbNullString, vbNullString, SW_SHOWNORMAL
End Sub
En n'oubliant pas, bien sûr, de remplacer "http://faq.vb.free.fr/"
par le site vers lequel le lien devra pointer. Pour faire un lien vers une
adresse e-mail, remplacez "http://faq.vb.free.fr/" par
"mailto:utilisateur@domain.com".
Afin de rendre votre lien plus réaliste, vous pouvez employer un curseur en
forme de main, tel celui employé dans Internet Explorer. Pour ce faire, le plus
simple est d'employer un fichier curseur ".cur" (celui représentant
le curseur utilisé par Internet Explorer peut être téléchargé sur ce même
site). Il vous suffit ensuite de positionner la propriété
"MousePointer" de votre contrôle sur "99 - Custom" et de
définir pour la propriété MouseIcon votre fichier.
Enfin, pour faire encore mieux, pourquoi ne pas créer un effet au survol de
la souris, comme par exemple un changement de couleur ? Mais vu que Visual Basic
ne possède pas d'événements "MouseEnter" et "MouseLeave",
il vous faudra gérer cela par vous-même. Et ce n'est malheureusement pas aussi
simple que cela. C'est pourquoi un article sera spécialement écrit à cet
effet. Et comme vous pourrez le constater, les techniques proposées utilisent
toutes les API et ne s'appliquent donc qu'à des contrôles possédant un hWnd.
Ce qui n'est pas le cas du contrôle Label. La solution sera donc de placer (par
exemple) le contrôle Label dans un contrôle PictureBox, qui lui possède un
hWnd. Voir aussi : |