Question 124

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 :

Date de publication : 13 février 2003
Dernière modification : 13 février 2003
Rubriques : Divers
Mots-clés : lien, hypertexte, mailto, HTML, www, net, web