URGENT : Codes couleurs

Developpjo Messages postés 4 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 31 décembre 2003 - 30 déc. 2003 à 17:01
Developpjo Messages postés 4 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 31 décembre 2003 - 31 déc. 2003 à 11:22
Bonsoir à tous,

Comment fait on pour personaliser une couleur de fond ou autre en attribuant une valeur de type : "&H8000000F" ??

A ce jour je ne sais utiliser que : rgb(255,204,0) comme exemple.

J'aimerais savoir traduire cet exemple ( RGB (255,204,0)) en quelque chose qui ressemble à "&H8000000F".

Merci pour votre aide

:shy) Developp'jo

4 réponses

Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
30 déc. 2003 à 17:51
Regarde dans mon site dans open source, la compil' de vjeux, je pense qui a un truc ainsi !
(ladresse est dans ma signature)

http://ziman4000.free.fr
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 déc. 2003 à 17:53
en fait, un couleur comme "&H8000000F" est une couleur systeme. elle prendra automatiquement la couleur des fenetres, dans ce cas précis. on peut les reconnaitre facilement : "&H8000000F"

pour retrouver une couleur RGB, il faut utiliser l'API GetSysColor. Voici une fonction qui fera tout le boulot.

Public Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long

Public Function OleColorToRGB(ByVal Color As OLE_COLOR) As Long
    If Color And &H80000000 Then
        OleColorToRGB = GetSysColor(Color Xor &H80000000)
    Else
        OleColorToRGB = Color
    End If
End Function


maintenant, tu peux faire :

Text.backcolor = OleColorToRGB ( &h8000000F& )


By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 déc. 2003 à 10:13
Tu désires le contraire ?

Pas très complexe, et en même temps un peu farfelu.....
J'imagine que si tu en a besoin...

Attention cependant, car bien souvent, plusieurs couleurs système ont la même couleur au final..... Mon code renvoi l'une des couleurs système...

Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long

Private Function RGBToOleColor(ByVal Color As Long) As OLE_COLOR
    Dim i As Long
    For i = 0 To 32
        If GetSysColor(i) = Color Then
            RGBToOleColor = (&H80000000 Or i)
            Exit Function
        End If
    Next i
End Function


ensuite, fais par exemple :

Private Sub Form_Load()
    MsgBox "&H" & Hex$(RGBToOleColor(RGB(255, 204, 0)))
    End
End Sub


By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Developpjo Messages postés 4 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 31 décembre 2003
31 déc. 2003 à 11:22
Merci pour ton aide précieuse.

:shy) Developp'jo
0
Rejoignez-nous