Page 1 sur 1

[Windows] Noeuds de TreeGadget en gras

Publié : jeu. 20/juil./2023 17:42
par boddhi
Je n'ai pas réussi à trouver cette méthode sur les forums PB, en tout cas pas de manière explicite dans le titre.

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


Re: [Windows] Noeuds de TreeGadget en gras

Publié : ven. 21/juil./2023 20:00
par Kwai chang caine
Merci du partage, marche niquel 8)

Re: [Windows] Noeuds de TreeGadget en gras

Publié : ven. 21/juil./2023 20:17
par Marc56
Hello,

Si le but est de mettre en valeur les éléments d'un TreeGadget, PB fourni des fonctions standard pour colorer texte et fond de chaque item. Pas besoin d'API

SetGadgetItemColor()

Code : Tout sélectionner

OpenWindow(0, 0, 0, 190, 180, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
TreeGadget(0, 10, 10, 160, 160)                                          

For a = 0 To 5
    AddGadgetItem(ID, -1, "Noeud "+Str(a), 0, 0)          
Next

SetGadgetItemColor(ID, 3, #PB_Gadget_FrontColor, #Red)
SetGadgetItemColor(ID, 5, #PB_Gadget_BackColor, #Yellow)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Et on peut aussi ajouter une icône différente à chaque item.

:wink:

Re: [Windows] Noeuds de TreeGadget en gras

Publié : ven. 21/juil./2023 21:26
par boddhi
@Marc
Marc56 a écrit : [...] Pas besoin d'API
Pfffff.... Tu serais pas un peu rabat-joie ???
Moi qui apprends à maîtriser tout doucement l'usage des API Windows... les pas trop compliquées, du moins... :lol: :wink:
Marc56 a écrit : Si le but est de mettre en valeur les éléments d'un TreeGadget, PB fourni des fonctions standard pour colorer texte et fond de chaque item. Pas besoin d'API
Je sais, je sais... mais je voulais absolument du gras !!! Je ne sais pas si les autres OS le permettent mais comme j'ai vu sur MSDN que c'était possible avec Windows, j'ai partagé l'astuce au cas où qq'un serait intéressé :wink:

Re: [Windows] Noeuds de TreeGadget en gras

Publié : sam. 22/juil./2023 10:56
par Kwai chang caine
Si le but est de mettre en valeur les éléments d'un TreeGadget
Ouaih..dommage que FRED n'ai pas été au bout de la question en excluant le ExplorerFileGadget par exemple :cry:
C'était justement une de mes dernières questions sur le US
https://www.purebasic.fr/english/viewto ... 73#p604173

Re: [Windows] Noeuds de TreeGadget en gras

Publié : mar. 25/juil./2023 19:12
par cage
Bonsoir,

Question toute bête, est-il possible de mettre un item d'un menu en gras.

cage