Color picker de windows

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 748 fois - Téléchargée 38 fois

Contenu du snippet

Code qui permet de choisir une color en montrant la fenêtre de windows Color Picker

Source / Exemple :


'Mettre ce code dans un module

Type CHOOSECOLOR
    lStructSize As Long
    hWndOwner As Long
    hInstance As Long
    rgbResult As Long
    lpCustColors As String
    flags As Long
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

Declare Function CHOOSECOLOR Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As CHOOSECOLOR) As Long

Public Function gfnLongToRGBString(lColor As Long) As String
   Dim iRed, iGreen, iBlue As Byte
   iRed = lColor Mod 256
   iGreen = ((lColor And &HFF00) / 256&) Mod 256&
   iBlue = (lColor And &HFF0000) / 65536
   gfnLongToRGBString = Str$(iRed) & Str$(iGreen) & Str$(iBlue)
End Function

Public Sub cChooseColor(ByRef frm As Form)
    Dim cc As CHOOSECOLOR
    Dim Custcolor(16) As Long
    Dim lReturn As Long
    Dim rgbVal As String
    ReDim CustomColors(0 To 16 * 4 - 1) As Byte
    Dim i As Integer
    Dim red, green, blue As String
    
    For i = LBound(CustomColors) To UBound(CustomColors)
        CustomColors(i) = 0
    Next i
    cc.lStructSize = Len(cc)
    cc.hWndOwner = frm.hWnd
    cc.hInstance = App.hInstance
    cc.lpCustColors = StrConv(CustomColors, vbUnicode)
    cc.flags = 0

    lReturn = CHOOSECOLOR(cc)
    If lReturn <> 0 Then
        'Change la couleur de fond de la form
        frm.BackColor = Str$(cc.rgbResult)
        CustomColors = StrConv(cc.lpCustColors, vbFromUnicode)
        
        rgbVal = LTrim(RTrim(gfnLongToRGBString(cc.rgbResult)))
    
        red = Mid(rgbVal, 1, InStr(rgbVal, " ") - 1)
        green = Mid(rgbVal, Len(red) + 2, InStr(Len(red) + 2, rgbVal, " ") - Len(red) - 2)
        blue = Right(rgbVal, Len(rgbVal) - Len(red) - Len(green) - 2)
        
        Do While Len(red) <> 3
            red = "0" & red
        Loop
        Do While Len(green) <> 3
            green = "0" & green
        Loop
        Do While Len(blue) <> 3
            blue = "0" & blue
        Loop
    Else
        Exit Sub
    End If
End Sub

'Mettre ce code dans un formulaire

Private Sub form_Load()
    Call cChooseColor(Form1)
End Sub

Conclusion :


Ce programme peut être modifier pour changer la couleur de ce que vous voulez.

A voir également

Ajouter un commentaire Commentaires
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

Tu devrais mettre une capture :)
Messages postés
8
Date d'inscription
lundi 16 juin 2003
Statut
Membre
Dernière intervention
6 mai 2005

Effectivement

CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color

peux tres bien remplacer tout ce code
Merci
Messages postés
8
Date d'inscription
lundi 16 juin 2003
Statut
Membre
Dernière intervention
6 mai 2005

Effectivement

CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color

peux tres bien remplacer tout ce code
Merci
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
En effet!!!

Quelle est l'utilité des API (si ce n'est le coté éventuellement pédagogique) ???

Enfin, on réinvente la roue comme on peut ;-)

Sinon, sympa. Mais je ne pense que la source devrait être mise en niveau "Intermédiaire"...
Messages postés
225
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
25 août 2008

la fonction ShowColor de CommonDialog fait la meme chose non ?? en 3 lignes de codes en plus.
Afficher les 6 commentaires

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.