cs_amita
Messages postés151Date d'inscriptionsamedi 17 juillet 2004StatutMembreDernière intervention11 mai 2012
-
20 févr. 2007 à 19:16
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 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
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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 ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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 )
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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