IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

(Débutant) Modifier la couleur d'un bouton selon champ booléen Access


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut [Clos] (Débutant) Modifier la couleur d'un bouton selon champ booléen Access
    Bonjour à tous et bonnes vacances aux veinards,

    C'est mon premier post auprès de la communauté Developpez.net
    Je suis un super débutant en développement et je suis obligé de m'y mettre pour réaliser une maquette alors il est possible que je vienne régulièrement demander des informations qui vous sembleront peut-être saugrenues ou très simple...
    Gardez juste à l'esprit que je débutte et qu'il est possible que j'ai du mal ...

    Mon environnement est Visual Studio 2005, je monte donc ma maquette en VB + Windows Form.

    La problématique qui m'amène ici :
    Je fais afficher sur mon formulaire la liste de mes ordinateurs, lorsque je selectionne un ordi par son nom dans ma combobox (grace au DataSet généré par l'import de ma base Access dans mon projet) j'affiche plusieurs caractéristiques de la machine concernée (CPU/RAM/HDD ... etc.)

    Je voudrais, par la même, que la couleur de fond d'un bouton (qui n'aura dans l'absolu pas d'autre fonction mais plus tard ouvrira un autre formulaire) change selon qu'un champ booléen de ma base de données soit vrai ou faux...
    Par exemple, lorsque le champ est vrai le fond du bouton soit vert et rouge lorsque le champ est faux.

    Je pense que je ne demande pas la Lune et que ce doit être super simple ; vous me direz hein

    Bonne journée
    Toine

  2. #2
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Bonjour,

    Pour modifier la couleur de fond du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Button_AddListBox.BackColor = Drawing.Color.Red
    Sinon tu as des très bons tutoriels sur le site.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Bonjour Lola,

    Merci de ta réponse. Je vais essayer ta ligne de code.
    J'ai bien vu (pas encore lu) les tutoriels dispo sur le site, merci pour le lien.
    Par contre, étant vraiement un super débutant je pensais utiliser le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Me._DataSet.Table.Contrat = True then Me.Button_AddListBox.BackColor = Drawing.Color.Red
    Enfin bref, je répond avant de tester mais je parts de zéro en développement, la seule chose que je sâche faire actuellement ce sont mes scripts de ligne de commande...

    Merci par avance

  4. #4
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    C'est effectivement le code qui tu as mis qu'il faut utiliser, en rajoutant quelques trucs pour prendre en compte l'autre possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me._DataSet.Table.Contrat = "True" then
         Me.Button_AddListBox.BackColor = Drawing.Color.Red
    elseif Me._DataSet.Table.Contrat = "False" then 
         Me.Button_AddListBox.BackColor = Drawing.Color.Green
    Jusqte une petite question: Me._DataSet.Table.Contrat contient bien une chaine de caractère avec "True" ou "False" ? Si oui alors n'oublie pas de mettre les "".

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Coucou et bon appetit,

    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me._DataSet.Table.Contrat = "True"
    VisualStudio me répond que Contrat n'est pas membre de mon application WindowsForm.
    Donc j'ai cherché un un petit peu et j'ai testé "ContratColumn" mais pareil ça ne me répond pas, je pense, parce que je cherche l'enregistrement de la ligne correspondant à ce que j'ai sélectionné dans ma combobox précédemment... (je sais pas si je suis clair)

    Alors voici où j'en suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            If Val(Me._DataSet.Table.ContratColumn.Container) = 0 Then
                Me.Button1.BackColor = Drawing.Color.Green
            ElseIf Val(Me._DataSet.Table.ContratColumn.Container) = 1 Then
                Me.Button1.BackColor = Drawing.Color.Red
            End If
    Mais il arrive a me changer la couleur du bouton une fois mais il ne varie pas lorsque je change de ligne dans ma combobox...
    En gros, je pense que "ContratColumn.Container" n'est pas le bon objet (column et pas cell par exemple) et/ou propriété (Container ?!)

    A noter que je suis repassé, pour plus de simplicité dans l'absolu, sur un champ Integer16 avec des valeurs (pour 10 enregistrement dans ma table test) "0" ou "1" un enregistrement sur deux...

    'Fin bref, j'ai faim ... à plus tard et toujours merci pour l'aide

  6. #6
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Ce code, après quel évènement tu le mets ?
    Si tu veux qu'il s'exécute après chaque changement de la valeur de la combobox il faut alloir le mettre dans l'évènement approprié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Protected Sub Combo1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Combo1.SelectedIndexChanged
    ...
    End Sub
    Par contre je ne comprends pas trop le reste. Peux-tu me dire exactement comment est constituée ta page, qu'est ce que tu veux afficher, ...

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    En fait j'ai une DB qui reprend toutes les caractéristiques de mes ordinateurs.
    Pour certains de ces ordis, j'ai ou non un contrat.

    J'affiche un champ de ma table dans un combobox : le nom de machine.
    Les machines dans ma DB sont en contrat ou non avec mon entreprise.
    Donc, par ligne dans ma DB j'ai le nom de machine et l'information du contrat : Oui ou Non.
    Si il y a bien un contrat, je souhaite faire passer la couleur de fond du bouton à Vert. S'il y en a pas, passer le fond en rouge (le bouton permettra l'ouverture d'un autre formulaire par la suite afin de pouvoir accéder aux détails du contrat ou d'en ajouter un).

    Dans l'absolu, j'utilise soit un champ 1/0 en integer que je test ensuite (parce que je ne connais pas encore les opérandes pour le booléen)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
            If Val(Me._DataSet.Table.ContratColumn.Container) = 0 Then
                Me.Button1.BackColor = Drawing.Color.Green
            ElseIf Val(Me._DataSet.Table.ContratColumn.Container) = 1 Then
                Me.Button1.BackColor = Drawing.Color.Red
            End If
        End Sub
    Et en effet, je dois bien collé ce code à l'évenement "Combobox1_SelectedIndexChanged" mais aussi, et ça je l'ai vu ensuite, à l'évenement "Form1_Load" afin qu'il traite le premier enregistrement de la table dès l'ouverture...

    Je tente d'être le plus clair possible dis moi si ya encore des points d'ombre...

  8. #8
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Attend, il y a quelque chose que j'ai du mal à comprendre.
    - Tu as autant de combobox que de lignes ? Et donc autant de bouton que de lignes ?

    - Tu veux que l'affichage du fond en vert ou rouge se fasse lors du chargement du formulaire ou à chaque changement de valeur de combobox ?

    - Comment affiche-tu concrétement tes données ?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    1 - Un seul combobox sur mon formulaire pour X machines (soit X lignes dans ma table, en l'occurence 10 pour le test)

    2 - Il faut que la fonction qui change la couleur du bouton s'execute et à l'ouverture du formulaire (pour traiter le premier enregistrement de la table) ainsi qu'à chaque changement de sélection dans la combobox (sinon le premier enregistrement de la table n'était traité qu'après que j'ai cliqué sur un autre).

    3 - Je vais t'ajouter un petit screenshot (GP.png) mais bon mon IHM est naze pour l'instant...
    Images attachées Images attachées  

  10. #10
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Avant de faire un IHM beau, il faut déjà qu'il soit fonctionnel.
    Bon maintenant je comprend beaucoup mieux.
    Peux-tu me montrer le code qui permet de récupérer les données qui sont affichées dans ton IHM, tu dois utiliser la même méthode pour ton bouton.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim ExistContrat as boolean
     
    ExistContrat = ... 'idem que ce qui t'a permis de récupérer les données pour tes champs
     
    if (ExistContrat = true) then
    'le reste qu'on a déjà vu

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    C'est maintenant Lola que tu vas vraiement te dire : "Mais quel naze celui là!"
    Et force est de constater que tu aurais raison de te dire ça...

    Ce n'est pas avec du code que j'ai fait cela mais avec un glissé déposé depuis la barre d'outils "Source de données" vers chaque TextBox ou Label

    Du coup je n'ai pas eu besoin de taper une seule ligne de code pour le faire.
    Mais ce que je peux t'en dire néammoins c'est que dans la propriété Text (par exemple) de ma TextBox2 est affiché une icone de DB et que cela pointe vers "TableBindingSource - TitreDeColonneDansMaDB"

    *** Rofll c'était plus facile de faire des scripts Bat ***

  12. #12
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Ok d'accord, s'aider de l'interface ne rend pas plus naze...
    Au fur et à mesure tu verras que tu combineras les deux.
    Bon imaginons une fonction qui permette de récupérer cette donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Public Shared Function ExistContrat(ByVal param_PcUser As String) As Boolean
     
    Dim myConnection As Data.SqlClient.SqlConnection
    Dim myCommand As Data.SqlClient.SqlCommand
    Dim myDataReader As Data.SqlClient.SqlDataReader
    Dim ExistContrat As Boolean
     
    myConnection = New Data.SqlClient.SqlConnection
    myConnection.ConnectionString = 'chaine de connection
    myCommand = New Data.SqlClient.SqlCommand("Select champ_contrat  from [Table] where PC = @PC", myConnection)
    myCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@PC", Data.SqlDbType.NVarChar, 50))
     
    myCommand.Parameters("@PC").Value = param_PcUser
    myConnection.Open()
    myDataReader = myCommand.ExecuteReader()
     
    Do Until (Not myDataReader.Read())
    ExistContrat = myDataReader("champ_contrat")
    Loop
     
    myDataReader.Close()
    myConnection.Close()
     
    Return ExistContrat
     
    End Function
    Voilà, cette fonction que tu appelera avec comme paramètre la valeur de ton combobox.
    La valeur qu'elle renvoie te permettra de choisir la couleur de ton bouton.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Coucou Lola,

    J'ai donc ajouté le paragraphe de code en tant que (Général) - (Déclarations)
    et la première ligne "Public Shared Function ExistContrat(ByVal param_PcUser As String) As Boolean" est surlignée en bleu clair indiquant :
    Instruction non valide dans un espace de noms.
    Je suis sûr on serait de visu ce serait déjà fini lol...

  14. #14
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Bonjour,
    Quand tu dis que tu l'as déclaré en tant que (Général) - (Déclarations) je ne comprends pas. Ou se situe le code ?
    Dans la page VB.Net associée à ta page Web ou dans une page de classe ?
    Parce que le code que je t'ai écrit est fait pour aller dans une feuille de class indépendante de la page Web. Cette fonction est elle même appellée dans la page Vb lié à la page Web.

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Ooops
    Bonjour Lola et merci de ta patience

    Non j'avais inséré le code en début de mon code de formulaire.
    Je suis trop débutant héhéhé...

  16. #16
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Pas de soucis.
    Ca marche maintenant ? Tu as trouvé où l'insérer ?

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    J'ai été sur de la technique ce matin et non sur le developpement.
    Je pense m'y mettre beaucoup ce week end.

    Par contre, mon hotspot wifi ne me donne accès qu'à mes mails si tu veux continuer (ce wend au moins) par mail, envois moi un petit message avec ton mail.

    Sinon, on en reparlera lundi prochain

    Passes un bon week end si on reparle pas d'ici là

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Bonsoir

    Bon je galere toujours. J'ai ajouté à mon projet le projet de class connexion.vb.

    J'ai en fait toujours la même erreur (du coup je ne suis pas allé tellement plus loin, sauf regarder ce qu'il me faudra en connectionstring) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Shared Function ExistContrat(ByVal param_PcUser As String) As Boolean

    Bonne soirée

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Coucou,

    Je suis en train de me faire le Coach VB Microsoft et y regarde tous les ateliers afin de completer mes lacunes. Sur ce, je clos le topic.

    Merci à toi Lola pour ton aide mais je pense qu'il me manque trop d'éléments pour l'instant. Je reviendrai t'en dire plus dès que j'aurais progressé

    A bientot.

    Le Toine

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD19] Modifier la couleur des libellés d'un champ Graphe
    Par elscorpio dans le forum WinDev
    Réponses: 0
    Dernier message: 20/10/2014, 10h58
  2. Impossible de modifier la couleur d'un bouton
    Par jpclabaux dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/03/2014, 19h03
  3. [Maxi débutant] modifier l'animation d'un bouton
    Par comode dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 24/02/2009, 00h31
  4. Modifier la couleur du texte d'un champ texte?
    Par wormseric dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 13/09/2007, 15h10
  5. Réponses: 4
    Dernier message: 31/07/2006, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo