Bonjour, je désire colorer du texte d'un ListViewGadget de différente couleur pour mettre en valeur certain élément. J'ai vue que quand on parle de coloration de gadget tout le monde propose d'utiliser purecolor. J'ai donc télécharger la librairie mais je n'arrive pas à tester les exemples, ils m'affichent une erreur "The following Purelibrairie is missing: Event"
Alors mes deux questions sont :
Comment colorer une ligne d'un gadget en particulier ou même un mot en particulier ? (Purecolor ?)
Comment puis-je fais pour faire fonctionner PureColor ?
Deux questions (purecolor et colorer un gadget)
-
- Messages : 117
- Inscription : dim. 21/déc./2008 18:39
Deux questions (purecolor et colorer un gadget)
http://www.purebasicstreet.com/ - Site dédié à purebasic.
Re: Deux questions (purecolor et colorer un gadget)
tu utilise la version Demo de purebasic ?
un petit code ici , aurai permis de comprendre ...
un petit code ici , aurai permis de comprendre ...

-
- Messages : 117
- Inscription : dim. 21/déc./2008 18:39
Re: Deux questions (purecolor et colorer un gadget)
Alors pour la 2nd question, j'ai trouvé tout seul, j'avais mal installé la librairie purecolor.
Et non je n'utilises pas la version démo.
Et non je n'utilises pas la version démo.

http://www.purebasicstreet.com/ - Site dédié à purebasic.
Re: Deux questions (purecolor et colorer un gadget)
Une toute petite recherche avec les mots clés "couleur listgadget" m'a amené ici :
http://www.purebasic.fr/french/viewtopi ... adget#p179
Avec une petit modif pour qu'il marche en 4.40 :
http://www.purebasic.fr/french/viewtopi ... adget#p179
Avec une petit modif pour qu'il marche en 4.40 :
Code : Tout sélectionner
; Constantes nécessaires a la procedure ListIconGadget_CustomDraw
#NM_CUSTOMDRAW = #NM_FIRST - 12
#CDDS_ITEM = $10000
#CDDS_SUBITEM = $20000
#CDDS_PREPAINT = $1
#CDDS_ITEMPREPAINT = #CDDS_ITEM | #CDDS_PREPAINT
#CDDS_SUBITEMPREPAINT = #CDDS_SUBITEM | #CDDS_ITEMPREPAINT
#CDRF_DODEFAULT = $0
#CDRF_NEWFONT = $2
#CDRF_NOTIFYITEMDRAW = $20
#CDRF_NOTIFYSUBITEMDRAW = $20
; window callback permettant de personnaliser l'affichage du ListIconGadget
Declare.l ListIconGadget_CustomDraw(WindowID.l, Message.l, wParam.l, lParam.l)
; On charge des polices de caractères
Global FontReg.l, FontBold.l
FontReg = LoadFont(1, "Tahoma", 9)
FontBold = LoadFont(2, "Tahoma", 9, #PB_Font_Bold)
; On crée une fenêtre
OpenWindow(0, 0, 0, 356, 197, "ListIconGadget_CustomDraw",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
; On crée un ListIconGadget avec 8 colonnes
Global posthilit.l
posthilit = ListIconGadget(1, 10, 10, 336, 177,"", 70, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
; il est important de stocker le Handle du ListIconGadget dans une variable global car il est utile pour la procedure ListIconGadget_CustomDraw()
AddGadgetColumn(1, 1, "Lun", 35)
AddGadgetColumn(1, 2, "Mar", 35)
AddGadgetColumn(1, 3, "Mer", 35)
AddGadgetColumn(1, 4, "Jeu", 35)
AddGadgetColumn(1, 5, "Ven", 35)
AddGadgetColumn(1, 6, "Sam", 35)
AddGadgetColumn(1, 7, "Dim", 35)
; On ajoute quelque ligne dans le ListIconGadget
For n = 0 To 23
AddGadgetItem(1, -1, Str(n) + Chr(10) + "XXX" + Chr(10) + Chr(10) + "XXX" + Chr(10) + Chr(10) + "XXX")
; Le chr(10) permet de passer à la case suivante (vers la droite)
Next
; On appelle la procedure permettant de personnaliser le ListIconGadget
SetWindowCallback(@ListIconGadget_CustomDraw())
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
End
; window callback permettant de personnaliser l'affichage du ListIconGadget
Procedure.l ListIconGadget_CustomDraw(WindowID.l, Message.l, wParam.l, lParam.l)
If Message = #WM_NOTIFY
*LVCDHeader.NMLVCUSTOMDRAW = lParam
If *LVCDHeader\nmcd\hdr\hWndFrom = posthilit And *LVCDHeader\nmcd\hdr\code = #NM_CUSTOMDRAW
Select *LVCDHeader\nmcd\dwDrawStage
Case #CDDS_PREPAINT
ProcedureReturn #CDRF_NOTIFYITEMDRAW
Case #CDDS_ITEMPREPAINT
ProcedureReturn #CDRF_NOTIFYSUBITEMDRAW
Case #CDDS_SUBITEMPREPAINT
; Modifier la <span class="posthilit">couleur</span> de fond
; *LVCDHeader\clrTextBk = RGB(255, 255, 223)
; Modifier la <span class="posthilit">couleur</span> du texte
; *LVCDHeader\clrText = RGB(0, 0, 255)
; Modifier la police
; SelectObject_(*LVCDHeader\nmcd\hDC, FontBold)
; On récupère les coordonnées de la case à colorier
Row.l = *LVCDHeader\nmcd\dwItemSpec
Col.l = *LVCDHeader\iSubItem
; On personnalise la case
If Col = 0
SelectObject_(*LVCDHeader\nmcd\hDC, FontBold)
Else
SelectObject_(*LVCDHeader\nmcd\hDC, FontReg)
EndIf
If (Row/2) * 2 = Row
*LVCDHeader\clrTextBk = RGB(255, 255, 223)
If Col = 3
*LVCDHeader\clrText = RGB(255, 0, 0)
EndIf
Else
*LVCDHeader\clrTextBk = RGB(208, 208, 176)
If Col = 3
*LVCDHeader\clrText = RGB(0, 0, 255)
EndIf
EndIf
ProcedureReturn #CDRF_NEWFONT
Default
ProcedureReturn #PB_ProcessPureBasicEvents
EndSelect
Else
ProcedureReturn #PB_ProcessPureBasicEvents
EndIf
Else
ProcedureReturn #PB_ProcessPureBasicEvents
EndIf
EndProcedure
; Les structures utilisées dans la procedure ListIconGadget_CustomDraw
; Structure NMCUSTOMDRAW
; hdr.NMHDR
; dwDrawStage.l
; hdc.l
; rc.RECT
; dwItemSpec.l
; uItemState.l
; lItemlParam.l
; EndStructure
; Structure NMLVCUSTOMDRAW
; nmcd.NMCUSTOMDRAW
; clrText.l
; clrTextBk.l
; iSubItem.l
; dwItemType.l
;
; clrFace.l
; iIconEffect.l
; iIconPhase.l
; iPartId.l
; iStateId.l
;
; rcText.RECT
; uAlign.l
; EndStructure
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 117
- Inscription : dim. 21/déc./2008 18:39
Re: Deux questions (purecolor et colorer un gadget)
Merci de vos réponses super rapide ! 

http://www.purebasicstreet.com/ - Site dédié à purebasic.