Label link trés simple, sans ocx ni rien

Soyez le premier à donner votre avis sur cette source.

Vue 6 343 fois - Téléchargée 643 fois

Description

La facon la plus simple de faire un hyperlien avec un controle Label Uniquement.
J'ai trouvé plusieurs sources qui etaient des OCX ou controle utilisateurs, perso quand je fait un prog j'aime en deployer le moins possible....

Source / Exemple :


Option Explicit
Dim i As Integer

Private Sub Form_Load()

For i = 0 To Label1.Count - 1
   Label1(i).ToolTipText = "Visiter " & Label1(i).Caption
Next
            ' Met a jour l'info bulle pour chaque lien
End Sub

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

For i = 0 To Label1.Count - 1
   Label1(i).FontUnderline = False  ' Lorsque la souris passe au dessus de la
Next                                ' Form les liens ne sont plus soulignés

End Sub

Private Sub Label1_Click(Index As Integer)

With Label1(Index)
   .FontUnderline = False   ' Enleve le trait de soulignement lors du click
   .ForeColor = vbRed       ' Pour marqué en rouge les liens deja visités
End With

' ### Action associé au click du lien
' ### Si la propriété Tag est vide on lance le lien par la propriété Caption
' ### Sinon on lance le lien avec la propriété Tag

If Label1(Index).Tag = "" Then
   Shell "explorer " & Label1(Index).Caption, vbHide    ' Lance Le lien avec la propriété Caption
Else
   Shell "explorer " & Label1(Index).Tag, vbHide        ' Lance Le lien avec la propriété Tag
End If

End Sub

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

For i = 0 To Label1.Count - 1   ' Boucle pour la totalité des controles
   If i = Index Then        ' Si la souris est sur ce controle
      Label1(i).FontUnderline = True    ' on le souligne
   Else
      Label1(i).FontUnderline = False   ' ou on le "désouligne"
   End If
Next

End Sub

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

For i = 0 To Label1.Count - 1
   Label1(i).FontUnderline = False  ' Lorsque le clik de la souris est relaché
Next                                ' Les liens son désoulignés

End Sub

Conclusion :


C'est tout simple , j'espere ca pourrat aider les debutants ;)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_moustachu
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012
-
L'avantage d'un contrôle, c'est que tu peux réutiliser le code. Tu utilises un controle Label + du code perso, pourquoi ne pas utiliser un autre contrôle qui contiendrait ton code ?

Si tu laisses appuyé sur le bouton de la souris et que tu relache le bouton une fois sorti de la feuille, ton lien reste sousligné.

Tu pourrais également compléter en lançant réellement le lien.

++
Moustachu
cs_marm0tte
Messages postés
203
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
18 janvier 2009
-
C'est sympa, mais je suis d'accord avec le moustachu ^^.

Je voudrais juste savoir, c'est quoi le nom du cursor avec la main ? :$
cs_Danyz
Messages postés
98
Date d'inscription
dimanche 20 juillet 2003
Statut
Membre
Dernière intervention
31 octobre 2006
-
comment ca le nom ?
il est dans le zip ( LabelLink/Curseur/Main.cur )

Sinon je l'ai recuperé dans System32 , y'a plein de fichier qui le contiennent :)

Pour Moustachu , merci de tes remarques constructives.
pour le lien qui reste souligné, il suffit de placer le meme code dans l'evenement MouseUp du label que dans l'evenement MouseMove de la form :

For i = 0 To Label1.Count - 1
Label1(i).FontUnderline = False
Next

Tu as raison pour le controle en fait.
Je vais mettre à jour la source dejà pour qu'il lance l'url et ta remarque ;)

Merci !
Saros
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010
-
Juste question d'optimisation... Quand ta souris quitte le label, ton programme parcourt tous les labels pour les déssouligner, alors qu'il n'y en a qu'un à faire.
Pour 4 labels ça va encore, mais bon...
Je te conseillerais plutôt d'enregistrer l'index du label survolé par la souris, puis de s'occuper de lui seulement après.

Puis sinon, je préfère les OCX, c'est moins de code dans les modules du projet, et plus simple d'utilisation...
Neo.balastik
Messages postés
797
Date d'inscription
jeudi 17 mai 2001
Statut
Membre
Dernière intervention
5 mai 2009
4 -
Disons que ce projet et valable pour un ou deux label sur un form, mais pas pour en faire un contrôle générique.

Aussi, l'événement Form_MouseMove du formulaire ne fonctionnera pas si le label et trop prêt d'un autre contrôle.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.