[R]Surligner ligne entière d'un Treeview

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
stramor
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 25 août 2016 10:48
Status : Hors ligne

[R]Surligner ligne entière d'un Treeview

#1

Message par stramor »

Bonjour,

Je vais expliquer ma demande par des illustrations, ce sera plus compréhensible.

Alors, je souhaiterai mettre une couleur de fond à chaque ligne de mon Treeview en fonction du niveau de l'item,
une illustration vaudra mieux, par exemple si j'utilise GUICtrlSetBkColor($TreeView4, 0x00FF00) cela me donne le résultat suivant (http://hpics.li/6646468) , or je souhaiterai que, pas seulement l'item soit surligné d'une couleur, mais bien toute la ligne (cette image à été fait sur paint rapidement pour donner une idée du résultat souhaité: http://hpics.li/f57cd93)

Auriez-vous des pistes ou pourriez-vous m'aider? merci d'avance!


fichier.ini (test)
[lien;]
google;//www.google.fr=autoit;https://www.autoitscript.fr
google2;//www.google.com=//www.google.com;https://www.autoitscript.fr
[DOC;//www.google.fr]
mes documents;=C\Bibliothèques\Documents;
[autres liens;]
programmation;=autoit2;https://www.autoitscript.fr/ |exemple;www.exemple.com

le code:
;
;                                       TEST v.1
;
;includes------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ListboxConstants.au3>
#include <EditConstants.au3>
#include <GuiTreeView.au3>
#include <Array.au3>

;initialisation variables--------------------------------------------------------------------------------------------------------------------------------------------------------------

$fDblClk = False
Dim  $i, $var, $file, $TreeView1, $var2, $TreeView2, $TreeView3, $test1, $varx, $var, $file, $x, $reference[100][3], $nbreference = 0, $z
$file = "fichier.ini"

;initialisation GUI--------------------------------------------------------------------------------------------------------------------------------------------------------------------

$GUI = GUICreate("TEST", 300 , @DesktopHeight, @DesktopWidth-300 , 0,$WS_POPUP,$WS_EX_COMPOSITED);création de la fenêtre
$barredep = GUICtrlCreateLabel("                                 TEST", 0, 0, 300, 20, -1, $GUI_WS_EX_PARENTDRAG) ;barre de déplacement du widget
$barredep = GuiCtrlSetColor(-1,0X0000FF)
$barredep = GUICtrlSetBkColor (-1,0X606060)
$list = GUICtrlCreateTreeView(0, 50, 300,@DesktopHeight-60 , BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE);création de list
GUISetState(@SW_SHOW, $GUI)

;initialisation----------------------------------------------------------------------------------------------------------------------------------------------------------------------

GUIRegisterMsg($WM_NOTIFY, "MY_WM_NOTIFY") ; initialisation double clique list
_IniGetSectionNames();fonction chargement list à partir d'un fichier ini


;evenementiel GUI----------------------------------------------------------------------------------------------------------------------------------------------------------------------
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

       EndSwitch

         If $fDblClk = True Then ; fonction en cas de double clique sur list
            $sText = _GUICtrlTreeView_GetText($list, _GUICtrlTreeView_GetSelection($list)); recupération de l'élément sélectionné dans list
             For $z = 0 To $nbreference
             if $reference[$z][1] = $sText Then
               if $reference[$z][2] <> '' Then ShellExecute($reference[$z][2]);si lien associé Item, lancer lien
              endif
            Next


          $fDblClk = False ; remise à zéro de la variable pour pouvoir double cliquer à nouveau
         EndIf

    WEnd
;libération de la mémoire------------------------------------------------------------------------------------------------------------------------------------------------------------

;fonctions---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Func MY_WM_NOTIFY($hWnd, $Msg, $wParam, $lParam); fonction detection double clique sur liste

    Switch $wParam
        Case $list
            Local $tagNMHDR = DllStructCreate("int;int;int", $lParam)
            If @error Then Return
            If DllStructGetData($tagNMHDR, 3) = $NM_CLICK Then
            $fDblClk = True
            ControlTreeView($GUI, "", $list, "Select", "")
            _GUICtrlTreeView_SetSelected($list, "", False)
         endif
    EndSwitch
    $tagNMHDR = 0

EndFunc

;fonction remplissage liste----------------------------------------------------------------------------------------------------------------------------------------------------------
Func _IniGetSectionNames()
    $varx = IniReadSectionNames($file)
    If @error Then
        MsgBox(4096, "", "Error occured, probably no INI file.")
    Else
        For $x = 1 To $varx[0]
            _IniReadInfo($varx[$x])
        Next
    EndIf
EndFunc
;fonction remplissage liste suite----------------------------------------------------------------------------------------------------------------------------------------------------
Func _IniReadInfo($sSection)
    Dim $sValue
    $var = IniReadSection($file, $sSection)
    If @error Then
        MsgBox(4096, "", "Error occured, check INI file.")
    Else
     Local $temporaire = StringSplit($sSection, ';')
     $reference[$nbreference][1] = $temporaire[1]
     $TreeView2 = GUICtrlCreateTreeViewitem($temporaire[1], $list)
     if $temporaire[2] <> '' Then ;test si lien associé à l'item de la viewlist
     $reference[$nbreference][2] = $temporaire[2] ;ajout d'un lien associé à l'item de la viewlist
     GuiCtrlSetColor(-1,0X0000FF)
     endif
     $nbreference = $nbreference + 1
        For $i = 1 To $var[0][0]
         $temporaire = StringSplit($var[$i][0], ';')
            $TreeView3 = GUICtrlCreateTreeViewItem($temporaire[1], $TreeView2)
         $reference[$nbreference][1] = $temporaire[1]
         if $temporaire[2] <> '' Then ;test si lien associé à l'item de la viewlist
         $reference[$nbreference][2] = $temporaire[2] ;ajout d'un lien associé à l'item de la viewlist
         GuiCtrlSetColor(-1,0X0000FF)
         EndIf
         $nbreference = $nbreference + 1
            $sValue = StringSplit($var[$i][1], '|')
            For $x = 1 To $sValue[0]
                if $sValue[$x] <> '' Then
               $temporaire = StringSplit($sValue[$x], ';')
               $TreeView4 = GUICtrlCreateTreeViewitem($temporaire[1], $TreeView3)
               $reference[$nbreference][1] = $temporaire[1]
               if $temporaire[2] <> '' Then ;test si lien associé à l'item de la viewlist
               $reference[$nbreference][2] = $temporaire[2] ;ajout d'un lien associé à l'item de la viewlist
               GuiCtrlSetColor(-1,0X0000FF)
               endif
               $nbreference = $nbreference + 1
               endif
            Next
        Next
    EndIf
 EndFunc
Modifié en dernier par stramor le mer. 31 août 2016 14:03, modifié 1 fois.
stramor
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 25 août 2016 10:48
Status : Hors ligne

Re: Surligner ligne entière d'un Treeview

#2

Message par stramor »

Est-ce possible au moins?

En alternative je peux rendre le fond de la Treeview transparente et placer des barres de couleurs en dessous, mais comment les placer automatiquement et au bon emplacement, de plus qu'il faut les faire disparaitre et apparaitre en fonction du déroulement de la treeview... Bref je pense que c'est un mauvais chemin

HELP :?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Surligner ligne entière d'un Treeview  

#3

Message par mikell »

$TVS_FULLROWSELECT :P

Je te suggère une lecture très attentive de la page _GUICtrlTreeView_Create du fichier d'aide
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
stramor
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 25 août 2016 10:48
Status : Hors ligne

Re: Surligner ligne entière d'un Treeview

#4

Message par stramor »

Merci beaucoup ! ça marche!
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R]Surligner ligne entière d'un Treeview

#5

Message par Tlem »

Bonsoir.
Il serait dommage que http://hpics.li ne fournisse plus d'ici quelques mois/années les images que vous y avez déposé.

Ce forum permet d'héberger pas mal de type de fichier, dont des images. ^^
La réédition de votre premier message permettrai une plus grande pérennité des éléments de votre demande. ^^

Envoyé de mon appareil mobile avec Tapatalk
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre