Couleur du jour avec un DTPicker

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 28 janv. 2008 à 10:07
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 28 janv. 2008 à 14:27
Bonjour

Je désire changer la couleur du jour sélectionné dans un DTPicker sans changer le thème utilisé (sans changer les params system quoi).

Merci d'avance.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 janv. 2008 à 11:26
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
28 janv. 2008 à 13:38
Bonjour

Je suis allé voir, mais je n'arrive pas à le faire fonctionner :

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal _
    wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const MCSC_BACKGROUND = 0   ' the background color (between months)
Private Const MCSC_TEXT = 1         ' the dates
Private Const MCSC_TITLEBK = 2      ' background of the title
Private Const MCSC_TITLETEXT = 3    ' text color of the title
Private Const MCSC_MONTHBK = 4      ' background within the month cal
Private Const MCSC_TRAILINGTEXT = 5 ' the text color of header & trailing days

Private Const DTM_SETMCCOLOR = &H1006

Et pour tester :
    SendMessage MonthView.hwnd, DTM_SETMCCOLOR, MCSC_BACKGROUND, RGB(255, 0, 0)
    SendMessage MonthView.hwnd, DTM_SETMCCOLOR, MCSC_TEXT, RGB(255, 255, 0)
    SendMessage MonthView.hwnd, DTM_SETMCCOLOR, MCSC_TITLEBK, RGB(0, 255, 0)
    SendMessage MonthView.hwnd, DTM_SETMCCOLOR, MCSC_TITLETEXT, RGB(0, 255, 255)
    SendMessage MonthView.hwnd, DTM_SETMCCOLOR, MCSC_TRAILINGTEXT, RGB(0, 0, 255)
    SendMessage MonthView.hwnd, DTM_SETMCCOLOR, MCSC_MONTHBK, RGB(255, 0, 255)

J'ai essayé ce code dans le Form_Load et dans un Timer, mme résultat, rien ne se passe concernant les couleurs.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 janv. 2008 à 13:40
gaffe au dernier parametre (a passer par valeur)
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
28 janv. 2008 à 13:53
Bonjour

J'ai donc mis lParam en :
Byval lParam as Long

Et (même si il est en As Any) les couleurs ne sont pas modifiées.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 janv. 2008 à 14:23
j'ai testé... ca coince effectivement (gaffe au messageID utilisé, MonthView<>DTPicker)

je m'apercois que ces controles disposent de propriétés qui servent à cela...

pourtant, la doc stipule bien:
If visual styles are active, this message has no effect except when iColor is MCSC_BACKGROUND.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 janv. 2008 à 14:27
tourne au poil :

Private Sub Command1_Click()
ChangeColors DTPicker1
ChangeColors MonthView1
End Sub

Private Sub ChangeColors(ByRef voClient As Object)
Randomize Timer
If TypeOf voClient Is DTPicker Then
voClient.CalendarBackColor = Rnd * vbWhite
voClient.CalendarForeColor = Rnd * vbWhite
voClient.CalendarTitleBackColor = Rnd * vbWhite
voClient.CalendarTitleForeColor = Rnd * vbWhite
voClient.CalendarTrailingForeColor = Rnd * vbWhite
ElseIf TypeOf voClient Is MonthView Then
voClient.BackColor = Rnd * vbWhite
voClient.MonthBackColor = Rnd * vbWhite
voClient.ForeColor = Rnd * vbWhite
voClient.TitleBackColor = Rnd * vbWhite
voClient.TitleForeColor = Rnd * vbWhite
voClient.TrailingForeColor = Rnd * vbWhite
End If

voClient.Refresh
End Sub





je pensais que ca faisait comme pour les progressbar, pour lesquels il faut passer par des messages pour en modifier la couleur...
je t'ai donc a tord orienté vers les APIs... sorry ^^
0
Rejoignez-nous