Tooltiptext et combobox

Résolu
cs_amita Messages postés 151 Date d'inscription samedi 17 juillet 2004 Statut Membre Dernière intervention 11 mai 2012 - 20 févr. 2007 à 19:16
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 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
A voir également:

8 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 févr. 2007 à 08:38
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 ?
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 févr. 2007 à 09:30
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
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 févr. 2007 à 11:40
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.
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 févr. 2007 à 19:22
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 févr. 2007 à 19:29
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 févr. 2007 à 19:36
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 févr. 2007 à 21:04
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.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 févr. 2007 à 21:08
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
0
Rejoignez-nous