[Windows] Noeuds de TreeGadget en gras

Partagez votre expérience de PureBasic avec les autres utilisateurs.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

[Windows] Noeuds de TreeGadget en gras

Message 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

Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: [Windows] Noeuds de TreeGadget en gras

Message par Kwai chang caine »

Merci du partage, marche niquel 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: [Windows] Noeuds de TreeGadget en gras

Message 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:
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: [Windows] Noeuds de TreeGadget en gras

Message 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:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: [Windows] Noeuds de TreeGadget en gras

Message 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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: [Windows] Noeuds de TreeGadget en gras

Message par cage »

Bonsoir,

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

cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Répondre