ToolTip sur bouton créé dynamiquement

Résolu
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 25 mars 2015 à 23:16
Whismeril Messages postés 19095 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 juillet 2024 - 26 mars 2015 à 19:11
Bonsoir le forum,

Sur une Form, je créé dynamiquement des boutons.
Pour chaque bouton créé, si le fichier correspondant n'existe pas, je mets ce bouton à Enable = False.

Je souhaiterai mettre un ToolTip aux boutons Enable = False pour expliquer cette indisponibilité.
Apparemment, c'est impossible.
Le ToolTip ne s'affiche que si le bouton est Enable = True.
Y a-t-il un moyen de contournement ???


Dim MyButton As New Button()
MyButton.Location = New Point(245, intPos)
MyButton.Height = 40
MyButton.Width = 150
MyButton.Text = pair.Key & " ( " & count & " )"
MyButton.Name = MyLabel2.Text
MyButton.Tag = pair.Value
MyButton.BackColor = Color.Aquamarine
MyButton.TextAlign = ContentAlignment.MiddleLeft
intPos = intPos + 42
Me.Controls.Add(MyButton)

' Si le fichier est vide, le bouton est désactivé
If count = 0 Then
ToolTip1.SetToolTip(MyButton, "bouton bloqué")
MyButton.Enabled = False
Else
ToolTip1.SetToolTip(MyButton, "bouton accessible")
End If
AddHandler MyButton.Click, AddressOf MyButton_Click

Merci pour vos suggestions,
jean-marc

5 réponses

NHenry Messages postés 15143 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 17 juillet 2024 159
25 mars 2015 à 23:20
Enabled=False, bloque tout les événements du contrôle, donc hormis lui donner une apparence "désactivée" et l'utiliser comme ça, je ne pense pas.
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
25 mars 2015 à 23:27
Merci NHenry de cette réponse aussi rapide.

J'attends demain si proposition de contournement avant de clôturer ce post.
Je pourrai éventuellement ne pas afficher les boutons "Enabled = False".

Bonne soirée,
jean-marc
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
26 mars 2015 à 14:07
Bonjour,

Et avec un contôle ErrorProvider comme ceci:

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Button1.Enabled = False
        If Me.Button1.Enabled = False Then
            Me.ErrorProvider1.SetError(Me.Button1, "bouton bloqué")
        End If
    End Sub
    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        Button1.Enabled = True
        Me.ErrorProvider1.SetError(Me.Button1, "")
        ToolTip1.SetToolTip(Button1, "bouton accessible")
    End Sub


A adapter à ton programme
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
Modifié par ucfoutu le 26/03/2015 à 17:08
Bonjour, Jean-Marc,
Je ne vois pas du tout la nécessité de se compliquer l'existence de cette curieuse manière (c'est un peu comme un distributeur de billets dont la fente d'introduction de carte serait fermée et auquel on demanderait d'afficher "vous n'avez pas compris que je suis hors service ?" lorsque l'on essaierait malgré tout d'y insérer une carte bancaire ! Et pourquoi pas, pendant qu'on y est, un troisième message "vous savez lire, oui ?", si l'on insiste, etc .. etc ...)
Mais si l'on y tient vraiment et si l'on croit vraiment que les utilisateurs sont de fieffés "endormis" : autant modifier directement le texte affiché par le bouton lorsqu'il est inhibé et le remettre comme à l'origine lorsqu'il est autorisé, non ?
Dans l'analogie avec un distributeur de billets : tu ne tenterais rien s'il affichait "INDISPONIBLE (pour telle raison, si nécessaire") d'entrée de jeu.

Edit : je te raconterai un jour l'histoire de la maman grenouille et du petit bébé grenouille...

Edit 2 : et puis par ailleurs rappeler à tous que l'évènement de survol d'un contrôle inhibé disparaît et que lui est alors substitué celui du survol du Form ? Il est alors facile (si l'on tient vraiment à un tooltip), de le mettre dans le Form lorsque les coordonnées sont à l'intérieur du rectangle normalement occupé par le bouton inhibé)

Edit 3 : et pour les demi-corses (comme moi) qui tiennent à ce tooltip mais ne veulent pas s'embarrasser de calculs de coordonnées du form : ben ... on met en-dessous du bouton dont il s'agit un autre bouton de même taille, auquel on attribue le tooltip ===>> ce tooltip ne réagira que lorsque le bouton sous lequel il est est inhibé, pardi !

Bon ... je vais voir si la louvine a fait son apparition.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
26 mars 2015 à 18:59
Bonjour Le Pivert,

Merci, c'est exactement ce que je recherchais !!!
                ' Si le fichier est vide, le bouton est désactivé
If count = 0 Then
MyButton.Enabled = False
Me.ErrorProvider1.SetError(MyButton, "Pour générer les consignes du client " & pair.Key & _
" ,vous devez d'abord générer le Plan de Production du client")
End If


@Jacques,
C'est pour prévenir l'utilisateur (Team Scheduler) qu'il doit d'abord effectuer un clic sur un autre bouton, puis relancer (bouton) l'application.
A la relance, l'ex-bouton False apparaitra en True et la génération de x fichiers de consignes sera exécutée.

Je mets le message en résolu.

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

Posez votre question
Whismeril Messages postés 19095 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 juillet 2024 660
26 mars 2015 à 19:11
Bonsoir UC
de le mettre dans le Form lorsque les coordonnées sont à l'intérieur du rectangle normalement occupé par le bouton inhibé
, un peu trop emprunt de culture VB6 ;-)
ben ... on met en-dessous du bouton dont il s'agit un autre bouton de même taille, auquel on attribue le tooltip
malin mais là aussi, surtout en génération dynamique, il faut tout doubler
Rejoignez-nous