Tooltiptext et combobox [Résolu]

cs_amita 151 Messages postés samedi 17 juillet 2004Date d'inscription 11 mai 2012 Dernière intervention - 20 févr. 2007 à 19:16 - Dernière réponse : jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention
- 21 févr. 2007 à 11:40
chers amis

voila je possède un combo box  avec plusieurs item expa  banane, orange...
je veut créer un tooltiptext au passage de la sourris pour m'afficher le tooltip quand je déroule le combobox

merci pour votre aide
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 21 févr. 2007 à 08:38
3
Merci
Bonjour,

Tu sais quoi ?
J'y ai pensé en dormant et me suis réveillé avec des idées :

Sur une Form :

- une combobox nommée combo1
- 1 timer nommé timer1
1 label nommé Label1

code :

Private Sub Form_Activate()
  For I = 0 To 40
    Combo1.AddItem I & "a"
  Next
  Timer1.Interval = 10
  Label1.AutoSize = True
  Label1.Move Combo1.Left, Combo1.Top - Label1.Height
  Label1.Visible = False
  Label1.BackColor = vbYellow
End Sub


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


Private Sub Timer1_Timer()
     If Me.ActiveControl <> Combo1 Then
       Label1.Visible = False
       Exit Sub
     End If
     Label1.Caption = Combo1.List(Combo1.ListIndex)
     If Label1.Caption <> "" Then Label1.Visible = True
End Sub

Comme tu le vois, le "pseudo tooltip" apparait en haut de ta combo.
Je pourrais bien sur le faire apparaître à côté de ton curseur, au prix de quelques calculs avec textheight, textwidth etc..., mais est-ce-que celà vaut vraiment le coup d'alourdir pour rien ton appli ?

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de jmfmarques
Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 21 févr. 2007 à 09:30
3
Merci
Tiens !
J'ai supprimé un petit défaut.
En faisant ainsi, l'affichage cesse quand il n'est plus nécessaire.
Corrige donc ainsi :

Private Sub Combo1_GotFocus()
  Timer1.Enabled = True
End Sub


Private Sub Form_Activate()
  For I = 0 To 40
    Combo1.AddItem I & "a"
  Next
  Timer1.Interval = 10
  Label1.AutoSize = True
  Label1.Move Combo1.Left, Combo1.Top - Label1.Height
  Label1.Visible = False
  Label1.BackColor = vbYellow
End Sub




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


Private Sub Timer1_Timer()
     Static depart As Long, jmf As String
     If Me.ActiveControl <> Combo1 Then
       Label1.Visible = False
       Exit Sub
     End If
     Label1.Caption = Combo1.List(Combo1.ListIndex)
     If Label1.Caption <> "" And Label1.Caption <> Combo1.Text Then Label1.Visible = True
End Sub


Conclusion : Aucune connaissance de VB ne prévaudra jamais sur les mécanismes de la pensée

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de jmfmarques
Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 21 févr. 2007 à 11:40
3
Merci
Ben... amita n'est plus là...

Ca ne fait rien... J'ai continué seul...

Voilà donc si l'on veut, en plus, que le pseudo tooltip suive le curseur

 Private Sub Form_Activate()
  For i = 0 To 40
    Combo1.AddItem i & "abbbbbcccc" & i
  Next
  Timer1.Interval = 10
  With Label1
    .AutoSize = True
    .Move Combo1.Left, Combo1.Top - Label1.Height
    .Visible = False
    .BackColor = vbYellow
  End With
  Set Font = Combo1.Font
End Sub




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


Private Sub Timer1_Timer()
     Static depart As Long, jmf As String
     If Me.ActiveControl <> Combo1 Then
       Label1.Visible = False
       Exit Sub
     End If
     Label1.Caption = Combo1.List(Combo1.ListIndex)
     If Label1.Caption <> "" And Label1.Caption <> Combo1.Text Then
       If TextWidth(Label1.Caption) <= Me.Width - (Combo1.Left + Combo1.Width) Then
         oux = Combo1.Left + Combo1.Width
       Else
         oux = Combo1.Left - TextWidth(Label1.Caption)
       End If
       ouy = ((Combo1.ListIndex - Combo1.TopIndex + 1.99) * (TextHeight("Je m'en fiche"))) + Combo1.Top
       If ouy > Me.Height - (3 * Label1.Height) Then ouy = Me.Height - (3 * Label1.Height)
       DoEvents
       With Label1
         .Move oux, ouy
         .ZOrder
         .Visible = True
       End With
     End If
End Sub

(on pourrait encore perfectionner, en utilisant une form plutot qu'un label )

Mission accomplie, pour ce qui me concerne.

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 20 févr. 2007 à 19:22
0
Merci
Bé...
Je crois bien avoir répondu à la même question (avec code) il y a peu...
cherche un peu sur ce forum, tu devrais retrouver cette discussion
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 20 févr. 2007 à 19:29
0
Merci
Non, ne cherche plus (c'érait sur un forum anglophone et c'était pour une listbox).

Je vais essayer de refaire celà pour une combobox.

Besoin de quelques minutes
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 20 févr. 2007 à 19:36
0
Merci
Non, désolé, mais une combo ne connait pas l'évènement mouse-move !

Je peux te servir la chose avec une listbox, mais pas avec une combobox, dans ces condtions.


J'y réfléchirais quand même après dîner, mais la chose me parait compromise si tu tiens à une combo
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 20 févr. 2007 à 21:04
0
Merci
Bon...
A amita, donc...


1) S'il te plait : pas de traitement des questions techniques par MP ...
2) du fait que les comboboxes ne connaissent pas l'événement mouse_move, on ne peut parvenir "de façpn normale" à ce que tu veux. On y parviendrait toutefois par des acrobaties diverses et complexes qui ne paraissent pas de ton niveau et dont je ne souhaites pas que tu t'en appriches à ce stade.
Amitiés.
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 20 févr. 2007 à 21:08
0
Merci
Si maintenant tu veux bien envisager l'utilisation :
- soit d'une listbox associée à une textbox (car, tous comptes faits, c'est bien cette association qu'est une Combobox)
- soit une MSFlexgrid

Alors oui, je te donnerai la solution à ton priblème d'affichage de tooltips
Commenter la réponse de jmfmarques

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.