Donc, à toutes fins utiles,
Un petit code pour permettre la mise en gras d'items (noeuds) d'un TreeGadget.
Ici, les items sont mis en gras de manière aléatoire mais rien n'empêche bien évidemment de choisir des critères précis pour ce faire.
Code : Tout sélectionner
EnableExplicit
;
Global.a NbLignes=11
Define.a NoFenetre=0,NoTreeGadget=10,NoLigneNoeudParent,NiveauItem,Compteur
;
Procedure.a Fc_TirageNombreAleatoire()
Protected.a ValeurRetour,Compteur
Static NewList Nombres.a()
If ListSize(Nombres())=0
For Compteur=0 To NbLignes
AddElement(Nombres())
Nombres()=Compteur
Next
RandomizeList(Nombres())
EndIf
FirstElement(Nombres())
ValeurRetour=Nombres()
Debug "Le noeud n° "+ValeurRetour+" va être mis en gras"
DeleteElement(Nombres())
ProcedureReturn ValeurRetour
EndProcedure
Procedure Pc_MiseEnGrasNoeud(ArgNoGadget.u,ArgNoItem.a)
Protected.TVITEM TvItem
With TvItem
\mask=#TVIF_HANDLE|#TVIF_STATE
\hItem=GadgetItemID(ArgNoGadget,ArgNoItem)
\state=#TVIS_BOLD ; #TVIS_BOLD=$10
\stateMask=#TVIS_BOLD
SendMessage_(GadgetID(ArgNoGadget),#TVM_SETITEM,0,TvItem)
EndWith
EndProcedure
;
OpenWindow(NoFenetre,0,0,400,400,"Démo Noeud TreeGadget en gras",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TreeGadget(NoTreeGadget,10,10,380,380)
; Alimentation Noeuds TreeGadget
For Compteur=0 To NbLignes
; Noeud parent (niveau 0) tous les 3 items
NiveauItem=Bool(Compteur%3=0)!1
AddGadgetItem(NoTreeGadget,-1,"Noeud "+Str(Compteur),0,NiveauItem)
If Not NiveauItem
If Compteur>0
SetGadgetItemState(NoTreeGadget,NoLigneNoeudParent,#PB_Tree_Expanded)
EndIf
NoLigneNoeudParent=Compteur
EndIf
Next
SetGadgetItemState(NoTreeGadget,NoLigneNoeudParent,#PB_Tree_Expanded)
; Pour le fun, tirage aléatoire des 4 noeuds à mettre en gras
For Compteur=1 To 4
Pc_MiseEnGrasNoeud(NoTreeGadget,Fc_TirageNombreAleatoire())
Next
; Boucle évènement
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow