Sélection palette de couleur

Résolu
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 - 29 oct. 2010 à 18:06
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 1 nov. 2010 à 08:54
Bonjour, voilà je voulais savoir comment je pourrais faire pour proposer dans mon logiciel une sorte de palette de couleur.
Je m'explique, dans un de mes formulaires, je veux proposer à l'utilisateur une palette de couleur. Ensuite je vais enregistrer la couleur choisit par l'utilisateur dans ma base de donnée. Enfin, quand il va ouvrir une autre fenêtre, il y aura un texte par exemple qui sera de la couleur qu'il a auparavant choisie..
Je ne sais pas du tout comment m'y prendre sachant que Visual Basic 2010 ne connait que des couleurs précises....

j'espère avoir été clair sur le sujet.

Merci.
A voir également:

13 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
30 oct. 2010 à 13:46
Bonjour,
Voici un code qui ouvre une boite de dialogue couleur et change la couleur du texte qui est situé dans un RichTextBox:

Dim MyDialog As New ColorDialog()
        'Empêche l'utilisateur de choisir une couleur personnalisée.
        MyDialog.AllowFullOpen = True
        'Permet à l'utilisateur de recevoir l'aide. (Le défaut est faux.)
        MyDialog.ShowHelp = True
        'Montre l'élection en couleur initiale à la couleur de texte actuelle,
        MyDialog.Color = RichTextBox1.ForeColor
        'Actualisez la couleur de boîte de texte si l'utilisateur clique OK 
        If (MyDialog.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            RichTextBox1.ForeColor = MyDialog.Color
        End If


A adapter suivant les besoins
@+Le Pivert
1
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
30 oct. 2010 à 21:02
En realite je voudrais par exemple definir le mydialog.color de façon manuel.dans votre exemple la couleur selectionnée par defaut a louverture de la palette sera celle du texte de la richbox. Je voudrais dune façon similaire definir cette couleur par un nom que jaurai obtenu prealablement. Pour etre plus claire, je place votre code dans une premiere fenetre, jobtient alors une couleur dans une msgbox en rempaçant votre ligne avant le end if comme ceci :
Msgbox(mydialog.color.name)
je recupere cette
Valeur que je souhaite dans une seconde fenetre etablir comme couleur par defaut cette valeur. Voyez-vous ce que je veux dire ?
1
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
30 oct. 2010 à 22:49
Si j'ai bien compris à la place du MsgBox remplacer par un Label comme ceci:

Label1.Text = MyDialog.Color.Name

Ensuite pour l'envoyer dans l'autre fenêtre mettre dans l'autre fenêtre:

Valeur = Form1. Label1.Text (si c'est Form1)
1
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
31 oct. 2010 à 06:27
oui mais le soucis c'est que dans l'autre fenetre il y aurait une autre palette de couleur qui aurait comme couleur selectionné par defaut celle de la valeur transmise c est ici que je ne comprend pas comment m'y prendre...
1

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

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
31 oct. 2010 à 08:19
Je ne pense pas que l'on puisse agir sur la boite de dialogue par code.
Je ne vois que la solution d'agir sur un contrôle de l'autre Form par exemple un TextBox
Du Form1 agir sur le Form2 qui a le TextBox1:

 Form2.TextBox1.ForeColor = MyDialog.Color



Je ne vois que cela
1
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
31 oct. 2010 à 11:40
J'ai trouvé pour garder les couleurs personnalisées d'un Form à l'autre.
2 Forms
Dans le Form1
1 Button2 pour ouvrir la boite couleur
1 Button1 pour ouvrir le Form2
1 TextBox1
1 ColorDialog1
code:
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form2.Show()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'ouvre la boite de dialogue Couleurs
        'Empêche l'utilisateur de choisir une couleur personnalisée.
        ColorDialog1.AllowFullOpen = True
        'Permet à l'utilisateur de recevoir l'aide. (Le défaut est faux.)

        ColorDialog1.ShowHelp = True
        'Montre l'élection en couleur initiale à la couleur de texte actuelle,
        ColorDialog1.Color = TextBox1.ForeColor

        'Actualisez la couleur de boîte de texte si l'utilisateur clique OK 
        If (ColorDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            TextBox1.ForeColor = ColorDialog1.Color
        End If
    End Sub


Dans le Form2
1 Button1
1 TextBox1
code:
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'ouvre la boite de dialogue Couleurs
        'Empêche l'utilisateur de choisir une couleur personnalisée.
        Form1.ColorDialog1.AllowFullOpen = True
        'Permet à l'utilisateur de recevoir l'aide. (Le défaut est faux.)

        Form1.ColorDialog1.ShowHelp = True
        'Montre l'élection en couleur initiale à la couleur de texte actuelle,
        Form1.ColorDialog1.Color = TextBox1.ForeColor

        'Actualisez la couleur de boîte de texte si l'utilisateur clique OK 
        If (Form1.ColorDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            TextBox1.ForeColor = Form1.ColorDialog1.Color
        End If
    End Sub

Bien vérifier quand on choisi une couleur personnalisée qu'elle s'inscrit bien en bas à gauche.
J'ai essayé de mémoriser la couleur personnalisée à la fermeture du Form avec Application Settings, mais cela ne marche pas.



Le Pivert
1
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
31 oct. 2010 à 12:25
J'ai trouvé ceci qui garde en mémoire certaines couleurs personnalisées:

Imports System.IO
Imports System.Windows.Forms


Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ColorDB As New ColorDialog()

        ColorDB.CustomColors = New Integer() _
        {&HFF00FF, &HFF0000, &HF0F0F0, &HF0F0F0, _
         &HAAAAAA, &HBBBBBB, &HCCCCCC, &HDDDDDD, _
         &HEEEEEE, &HAAA0A0, &HBBB0B0, &HCCC0C0, _
         &HDDD0D0, &H111111, &H333333, &H888888}

        If (ColorDB.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            Console.WriteLine(ColorDB.Color)
        End If


    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim ColorDialog1 As ColorDialog = New System.Windows.Forms.ColorDialog
        'Dim objSelectedColor As Color
        'Dim aryColors() As Integer = {222663, 35453, 7888}
        Dim aryColors() As Integer = {Math.Abs(Color.Gray.ToArgb), _
              Math.Abs(Color.Navy.ToArgb), _
              Math.Abs(Color.Teal.ToArgb)}

        With ColorDialog1
            .Color = Color.Blue
            .AllowFullOpen = True
            .FullOpen = True
            .AnyColor = True
            .CustomColors = aryColors
            .SolidColorOnly = True
        End With

        If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            Console.WriteLine(ColorDialog1.Color)
        End If


    End Sub
End Class


Je pense qu'en récupérant le code couleur à la fermeture et en l'intégrant à l'ouverture dans un de ces 2 codes on doit pouvoir arriver à un résultat.

Le Pivert
1
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
31 oct. 2010 à 15:29
Merci !!
1
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
31 oct. 2010 à 15:53
J'ai trouvé une autre méthode :
 'Montre l'élection en couleur initiale à la couleur récup ds la bdd
        MyDialog.Color = Drawing.Color.FromArgb(codeargb)
If (MyDialog.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            MsgBox(MyDialog.Color.ToArgb()) ' a enreg ds la bdd
            'affichage
            Label6.ForeColor =Drawing.Color.FromArgb(MyDialog.Color.ToArgb())
        End If

je récupére la couleur selectionné dans la 1ere fenetre avec :codeargb=MyDialog.Color.ToArgb() et je met cette couleur comme couleur par défaut en la récupérant grace à Drawing.Color.FromArgb(codeargb)
et enfin je change la couleur des labels avec Label6.ForeColor =Drawing.Color.FromArgb(codeargb)

merci pour votre aide
1
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
31 oct. 2010 à 18:39
Si cela peut te servir je t'ai fait le code en Long, tu peux le récupérer quand tu veux:

 Dim MyDialog As New ColorDialog()
        'Actualisez la couleur de boîte de texte si l'utilisateur clique OK 
        If (MyDialog.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            MsgBox(MyDialog.Color.B * 65536 + MyDialog.Color.G * 256 + MyDialog.Color.R) 'conversion en Long
        End If



@+Le Pivert
1
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
1 nov. 2010 à 08:54
J'ai réusi à mémoriser la couleur personnalisée de la boite de dialogue. Si cela t'interesse voir ceci:


http://www.vbfrance.com/codes/MEMORISER_VALEUR_51785.aspx

@+ Le Pivert
1
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
30 oct. 2010 à 18:27
merci beaucoup, mais je voulais dans le cas où je veux enregistrer cette couleur dans une base de donnée j'ai bien compris que il faudra enregistrer :
MyDialog.Color.Name
pour pouvoir stocker la couleur en hexa mais pour utiliser une couleur récupérer dans la base, comment faire ?

merci
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
30 oct. 2010 à 18:57
Désolé mais je ne connais rien aux bases de données.
0
Rejoignez-nous