Deux questions (purecolor et colorer un gadget)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
stombretrooper
Messages : 117
Inscription : dim. 21/déc./2008 18:39

Deux questions (purecolor et colorer un gadget)

Message par stombretrooper »

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 ?
http://www.purebasicstreet.com/ - Site dédié à purebasic.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Deux questions (purecolor et colorer un gadget)

Message par Backup »

tu utilise la version Demo de purebasic ?

un petit code ici , aurai permis de comprendre ... ;)
stombretrooper
Messages : 117
Inscription : dim. 21/déc./2008 18:39

Re: Deux questions (purecolor et colorer un gadget)

Message par stombretrooper »

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. ;)
http://www.purebasicstreet.com/ - Site dédié à purebasic.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Deux questions (purecolor et colorer un gadget)

Message par Ar-S »

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 :

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
stombretrooper
Messages : 117
Inscription : dim. 21/déc./2008 18:39

Re: Deux questions (purecolor et colorer un gadget)

Message par stombretrooper »

Merci de vos réponses super rapide ! :)
http://www.purebasicstreet.com/ - Site dédié à purebasic.
Répondre