Sélection palette de couleur [Résolu]

cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention - 29 oct. 2010 à 18:06 - Dernière réponse : cs_Le Pivert 5436 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 11 octobre 2018 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
cs_Le Pivert 5436 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 11 octobre 2018 Dernière intervention - 30 oct. 2010 à 13:46
3
Merci
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

Merci cs_Le Pivert 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de cs_Le Pivert
cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention - 30 oct. 2010 à 18:27
0
Merci
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
Commenter la réponse de cs_lilj
cs_Le Pivert 5436 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 11 octobre 2018 Dernière intervention - 30 oct. 2010 à 18:57
0
Merci
Désolé mais je ne connais rien aux bases de données.
Commenter la réponse de cs_Le Pivert
cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention - 30 oct. 2010 à 21:02
0
Merci
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 ?
Commenter la réponse de cs_lilj
cs_Le Pivert 5436 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 11 octobre 2018 Dernière intervention - 30 oct. 2010 à 22:49
0
Merci
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)
Commenter la réponse de cs_Le Pivert
cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention - 31 oct. 2010 à 06:27
0
Merci
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...
Commenter la réponse de cs_lilj
cs_Le Pivert 5436 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 11 octobre 2018 Dernière intervention - 31 oct. 2010 à 08:19
0
Merci
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
Commenter la réponse de cs_Le Pivert
cs_Le Pivert 5436 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 11 octobre 2018 Dernière intervention - 31 oct. 2010 à 11:40
0
Merci
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
Commenter la réponse de cs_Le Pivert
cs_Le Pivert 5436 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 11 octobre 2018 Dernière intervention - 31 oct. 2010 à 12:25
0
Merci
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
Commenter la réponse de cs_Le Pivert
cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention - 31 oct. 2010 à 15:29
0
Merci
Merci !!
Commenter la réponse de cs_lilj
cs_lilj 205 Messages postés dimanche 13 décembre 2009Date d'inscription 1 avril 2012 Dernière intervention - 31 oct. 2010 à 15:53
0
Merci
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
Commenter la réponse de cs_lilj
cs_Le Pivert 5436 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 11 octobre 2018 Dernière intervention - 31 oct. 2010 à 18:39
0
Merci
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
Commenter la réponse de cs_Le Pivert
cs_Le Pivert 5436 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 11 octobre 2018 Dernière intervention - 1 nov. 2010 à 08:54
0
Merci
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
Commenter la réponse de cs_Le Pivert

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.