[R] Treeview et clic sur item

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 375
Enregistré le : mar. 04 nov. 2008 21:51
Status : Hors ligne

[R] Treeview et clic sur item

#1

Message par scorp84 »

Bonjour à tous,

Voici mon problème du jour : J'ai un Treeview que je remplie d'après un tableau et j'aimerai au clic sur un des item ouvrir le fichier associé.

Voici mon code :
#include <Array.au3>
#include <GuiTreeView.au3>

Dim $tab_treeview[4][3]

$tab_treeview[0][0]="CAT"
$tab_treeview[0][1]="LIBELE"
$tab_treeview[0][2]="FICHIER"


$tab_treeview[1][0]="CONTRATS"
$tab_treeview[1][1]="Contrat 001"
$tab_treeview[1][2]=@ScriptDir & "\contrat001.txt"

$tab_treeview[1][0]="CONTRATS"
$tab_treeview[1][1]="Contrat 002"
$tab_treeview[1][2]=@ScriptDir & "\contrat002.txt"

$tab_treeview[2][0]="CONTRATS"
$tab_treeview[2][1]="Contrat 003"
$tab_treeview[2][2]=@ScriptDir & "\contrat003.txt"

$tab_treeview[3][0]="CONSIGNES"
$tab_treeview[3][1]="Consignes 001"
$tab_treeview[3][2]=@ScriptDir & "\consignes.txt"


;_ArrayDisplay($tab_treeview,"$tab_treeview " & @ScriptLineNumber)

#include <GUIConstantsEx.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)
Global $TreeView1 = GUICtrlCreateTreeView(40, 48, 425, 217)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

f_generertreeview()

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd


Func f_generertreeview()

   $ged_cat_ex=""
   $TreeView1_menu_item=0

   Global $aItem[UBound($tab_treeview)]

   For $i = 1 To UBound($tab_treeview)-1

      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $tab_treeview[$i][0] = ' & $tab_treeview[$i][0] & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

      $ged_cat="DOCS " & $tab_treeview[$i][0]


      If $ged_cat<>$ged_cat_ex Then
         $aItem[$i]=_GUICtrlTreeView_Add($TreeView1,0,$ged_cat)

         $ged_cat_ex=$ged_cat

         $TreeView1_menu_item=$aItem[$i]

      EndIf

      _GUICtrlTreeView_AddChild($TreeView1,$TreeView1_menu_item, $tab_treeview[$i][1])

   Next
   _GUICtrlTreeView_EndUpdate($TreeView1)
EndFunc
J'ai trouvé des exemples de récup de l'item cliqué mais soit via un bouton, soit je ne comprenais pas comment cela était construit.

Quelqu'un aurait il la solution svp ?

Merci à tous et prenez soin de vous.

Amicalement.

BM
Modifié en dernier par scorp84 le mer. 13 mai 2020 20:50, modifié 1 fois.

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 817
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Treeview et clic sur item

#2

Message par walkson »

Bonjour,
Comme ça ?
#include <GUIConstantsEx.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
;========== création des txt ================
For $i = 1 To 3
   $open = FileOpen(@ScriptDir & "\contrat" & $i & ".txt",8 + 2)
   FileWrite($open,"contrat" & $i & ".txt")
   FileClose($open)
Next
;===========================================
Global $Form1 = GUICreate("Form1", 383, 438, 192, 124)
Global $TreeView1 = GUICtrlCreateTreeView(40, 24, 281, 329,-1,$WS_EX_CLIENTEDGE)
Global $TreeView1_0 = GUICtrlCreateTreeViewItem("contrat", $TreeView1)
Global $TreeView1_1 = GUICtrlCreateTreeViewItem("contrat1", $TreeView1_0)
Global $TreeView1_2 = GUICtrlCreateTreeViewItem("contrat1.txt", $TreeView1_1)
Global $TreeView1_3 = GUICtrlCreateTreeViewItem("contrat", $TreeView1)
Global $TreeView1_4 = GUICtrlCreateTreeViewItem("contrat2", $TreeView1_3)
Global $TreeView1_5 = GUICtrlCreateTreeViewItem("contrat2.txt", $TreeView1_4)
Global $TreeView1_6 = GUICtrlCreateTreeViewItem("contrat", $TreeView1)
Global $TreeView1_7 = GUICtrlCreateTreeViewItem("contrat3", $TreeView1_6)
Global $TreeView1_8 = GUICtrlCreateTreeViewItem("contrat3.txt", $TreeView1_7)
GUISetState(@SW_SHOW)

_GUICtrlTreeView_Expand($TreeView1)
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit
    Case $TreeView1_2
       $contrat = GUICtrlRead($TreeView1_2,1)
       If FileExists($contrat) Then ShellExecute($contrat)
    Case $TreeView1_5
       $contrat = GUICtrlRead($TreeView1_5,1)
       If FileExists($contrat) Then ShellExecute($contrat)
    Case $TreeView1_8
       $contrat = GUICtrlRead($TreeView1_8,1)
       If FileExists($contrat) Then ShellExecute($contrat)
 EndSwitch
WEnd
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)

Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 375
Enregistré le : mar. 04 nov. 2008 21:51
Status : Hors ligne

Re: [..] Treeview et clic sur item

#3

Message par scorp84 »

Bonjour Walkson,

Votre exemple est excellent mais comment faire pour l'associer à un tableau dynamique car je ne pourrai pas déclarer dans ma construction de GUI tous les items ne les sachant pas à l'avance ?

Merci +++

Amicalement.

BM
Dim $tab_treeview[4][3]

$tab_treeview[0][0]="CAT"
$tab_treeview[0][1]="LIBELE"
$tab_treeview[0][2]="FICHIER"


$tab_treeview[1][0]="CONTRATS"
$tab_treeview[1][1]="Contrat 001"
$tab_treeview[1][2]=@ScriptDir & "\contrat001.txt"

$tab_treeview[1][0]="CONTRATS"
$tab_treeview[1][1]="Contrat 002"
$tab_treeview[1][2]=@ScriptDir & "\contrat002.txt"

$tab_treeview[2][0]="CONTRATS"
$tab_treeview[2][1]="Contrat 003"
$tab_treeview[2][2]=@ScriptDir & "\contrat003.txt"

$tab_treeview[3][0]="CONSIGNES"
$tab_treeview[3][1]="Consignes 001"
$tab_treeview[3][2]=@ScriptDir & "\consignes.txt"

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 817
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Treeview et clic sur item  

#4

Message par walkson »

Vous préférez cela ?

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
#include <Array.au3>
#include <File.au3>

;========== création des txt ================
For $i = 1 To 20
	$open = FileOpen(@ScriptDir & "\AA\" & $i & " contrat.txt",8 + 2)
	FileWrite($open,$i & " contrat.txt")
	FileClose($open)
Next
;===========================================
Global $array = _FileListToArray(@ScriptDir & "\AA","*.txt",$FLTA_FILES,True)
_ArrayDelete($array,0);sup nb de lignes
Global $myArray[0]
Global $Form1 = GUICreate("Form1", 383, 438, 192, 124)
Global $TreeView1 = GUICtrlCreateTreeView(20, 24, 350, 329,BitOR($TVS_TRACKSELECT,$GUI_SS_DEFAULT_TREEVIEW), BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))

GUISetState(@SW_SHOW)

For $i = 0 To UBound($array) - 1
	$niveau1 = GUICtrlCreateTreeViewItem("contrat", $TreeView1)
			   $string = StringRegExp($array[$i],"(?i)AA\\(.*?)\.txt",1);ne conserve que $i & " contrat"
	$niveau2 = GUICtrlCreateTreeViewItem($string[0], $niveau1)
	$niveau3 = GUICtrlCreateTreeViewItem($array[$i], $niveau2);chemin des txt
	_ArrayAdd($myArray, $niveau3)
Next
$bb = GUICtrlCreateButton("I see",50,380,100,25)
$bb1 = GUICtrlCreateButton("Expand",160,380,100,25)
GUISetState(@SW_SHOW)

Local $expand = False
_GUICtrlTreeView_SelectItem($TreeView1, GUICtrlGetHandle($myArray[0] - 2) );sélectionne le premier item
_GUICtrlTreeView_SetLineColor($TreeView1,0xFFFFFF)
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit
	 Case $myArray[0] To $myArray[UBound($myArray) - 1]
		 $contrat = GUICtrlRead($nMsg,1)
		 If FileExists($contrat) Then ShellExecute($contrat)
	 Case $bb
		 MsgBox(0,"",GUICtrlRead($TreeView1,1))
	 Case $bb1
		 $expand = Not $expand
		 _GUICtrlTreeView_Expand($TreeView1,0, $expand)
		 GUICtrlSetData($bb1,$expand = True ? "Reduit":"Developpe")

 EndSwitch
WEnd

Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)

Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 375
Enregistré le : mar. 04 nov. 2008 21:51
Status : Hors ligne

Re: [..] Treeview et clic sur item

#5

Message par scorp84 »

Bonsoir,

C'est parfait +++

Merci.

Amicalement.

BM

Répondre