ToolTip sur bouton créé dynamiquement [Résolu]

cs_JMO 1850 Messages postés jeudi 23 mai 2002Date d'inscription 11 mai 2018 Dernière intervention - 25 mars 2015 à 23:16 - Dernière réponse : Whismeril 11552 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

NHenry 14182 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 25 mai 2018 Dernière intervention - 25 mars 2015 à 23:20
0
Merci
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 1850 Messages postés jeudi 23 mai 2002Date d'inscription 11 mai 2018 Dernière intervention - 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
Commenter la réponse de NHenry
cs_Le Pivert 5148 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 24 mai 2018 Dernière intervention - 26 mars 2015 à 14:07
0
Merci
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
Commenter la réponse de cs_Le Pivert
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 26/03/2015 à 17:08
0
Merci
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
Commenter la réponse de ucfoutu
cs_JMO 1850 Messages postés jeudi 23 mai 2002Date d'inscription 11 mai 2018 Dernière intervention - 26 mars 2015 à 18:59
0
Merci
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.
Commenter la réponse de cs_JMO
Whismeril 11552 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention - 26 mars 2015 à 19:11
0
Merci
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
Commenter la réponse de Whismeril

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.