begin process at 2010 03 14 22:58:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > LABEL LINK TRÉS SIMPLE, SANS OCX NI RIEN

LABEL LINK TRÉS SIMPLE, SANS OCX NI RIEN


 Information sur la source

Note :
Aucune note
Catégorie :Trucs & Astuces Niveau :Débutant Date de création :20/02/2005 Date de mise à jour :21/02/2005 11:57:23 Vu / téléchargé :4 742 / 486

Auteur : Danyz

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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
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 ;)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

21 février 2005 11:57:23 :
MAJ : Le label lance maintenant l'URL et le lien ne reste plus souligné lorsque l'on click sur le label et que l'on relache le click en dehors de la feuille

 Sources du même auteur

Source avec Zip Source avec une capture ASTUCE IMAGELIST COMCTL32.OCX
Source avec Zip Source avec une capture POPUP MENU COMPLET POUR RICHTEXTBOX (COPIER,COLLER,ETC...)
Source avec Zip Source avec une capture RECHERCHE DE PAROLES DE CHANSONS
Source avec Zip Source avec une capture HEXA / DECIMAL / VB HEXA / RVB - TOUTES LES CONVERSIONS DE T...
Source avec Zip Source avec une capture CALENDRIER (SANS OCX , GERE LES ANNÉES BISSEXTILES)

 Sources de la même categorie

Source avec Zip Source avec une capture JSON PARSER - ANALYSE DE CHAINES JSON par Renfield
Source avec Zip CREATION DE GADGET EN VB6 par djebbipgm
Source avec Zip Source avec une capture CAPTEUR DE HANDLE, DE TITRE, DE CLASS, DE POSITION DE TAILLE... par Sechaud
Source avec Zip Source avec une capture COULEUR DANS UN RICHTEXTBOX SANS MODIFIER SELSTART OU SELLEN... par Renfield
Source avec Zip Source avec une capture DIGIT D'AFFICHEUR LCD OCX par mays

Commentaires et avis

Commentaire de moustachu le 21/02/2005 09:36:35

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

Commentaire de marm0tte le 21/02/2005 11:22:01

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 ? :$

Commentaire de Danyz le 21/02/2005 11:39:45

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 !

Commentaire de Saros le 21/02/2005 15:33:18

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...

Commentaire de Neo.balastik le 21/02/2005 16:55:06

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.  

Commentaire de MadM@tt le 21/02/2005 22:10:06

D'accord avec tous, c'est beaucoup mieux en controle car en 2 clics tu a ton Label link, alors que la tu te trimballe du code.
Avant j'étais comme toi, beurk les OCX, mais en fait je trouve que c'est le pied du programmeur passke t'a rien à faire et pourtant c'est bien ton code, pas comme une dll que t'utilise et que t'a pas programmé toi meme...
Enfin c'est un avis perso.

Mais après toujours le meme problème dès qu'il faut faire des mouseover et mouseout... Toujours des bugs, le seul moyen de faire un truc qui marche bien c'est en utilisant les coordonées de la souris (sans parler du subclassing trop compliqué juste pour ça), mais coordonées de la souris = plus de calculs...

Commentaire de Neo.balastik le 22/02/2005 09:05:00

Une solution adéquate pour créer un événement MouseOver et MouseOut est d'utiliser conjointement les
API GetWindowRect, GetCapture, ReleaseCapture et SetCapture et cela sans subclassing ni Timer.  Il faudra bien entendu gérer les événements dans le contrôle avec Event et RaiseEvent.

Commentaire de MadM@tt le 22/02/2005 11:57:17

Dit Neo.balastik tu connaitrais une source de ce dont tu parles, j'en ai jamais vu j'aimerais bien voir ce que ça donne.

Commentaire de moustachu le 22/02/2005 12:08:17

Je veux pas me faire de la puc mais c'est comme ça que je procède...
http://www.vbfrance.com/code.aspx?id=28210

Commentaire de FENETRES le 28/02/2005 18:14:34

Effectivement, une autre méthode consiste à simuler un flux parallèle dans un contrôle personnalisé (voir ma dernière source). Cette solution évite d'intercepter un évènement de souris et permet de réutiliser le code source du composant.

Commentaire de FENETRES le 28/02/2005 18:18:44

Adresse de l'exemple utilisant un contrôle personnalisé :http://www.vbfrance.com/code.aspx?id=26671

Commentaire de hobbydax le 23/11/2007 14:13:10

Cela ne fonctionne pas pour les liens du type "http://www.iso.org/iso/fr/catalogue_detail?csnumber=23632"
Il me renvoit l'erreur "could not find path 23632".

 Ajouter un commentaire




Nos sponsors


Appels d'offres

Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales