Je me trouve devant un problème insoluble, j'aimerai effectuer une action sur le clic d'un item sur un arbre, sauf que je ne comprends pas comment le gérer dans mon code actuel.
Anyone can help me ?

► Afficher le texte
Code : Tout sélectionner
#region Include
;~ Include de GUI
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUITreeView.au3>
#include <GuiListView.au3>
#include <GUIEdit.au3>
#include <GUIButton.au3>
;~ Include Controls
#include <ListViewConstants.au3>
#include <TreeViewConstants.au3>
;~ Include Fichiers
#include <file.au3>
;~ Include DBO
#include <Array.au3>
;~ #include <SQLite.au3>
;~ #include <SQLite.dll.au3>
;~ Include error_msg
#include <ManageError.au3>
#endregion Include
#region Variant
Const $slash = "\" ; Constante gérant l'antislash
Dim $file_Cc, $filechemin, $file_import ; Variables de fichiers
Dim $tnb_ligne ; Variables de compteurs de lignes de tableau
Dim $T_Array ; Variables de tableau
Dim $List_Of, $ind_col5 ; Variables de Listes
Dim $Tree_Cc,$item ; Variables d'arbres
#endregion Variant
#Region ### START Koda GUI section ### Form=
$Frm_Visu_Of = GUICreate("Visualisation des OF", 1071, 215, -1, -1)
$Txt_FA = GUICtrlCreatelabel("Saisir le N° de FA",924,42)
$Lbl_FA = GUICtrlCreateInput("",924,88,120,25)
$Valide_FA = GUICtrlCreateButton("Ecrire le N° de FA",924,142,120,25)
create_treeitem_lv1()
create_listview()
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
#region Main
While 1
DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $List_Of
write_fa()
case $Valide_FA
valide_fa()
Case $Tree_Cc
;Sélection non fonctionnelle
affich_id_ctrl()
EndSwitch
WEnd
#endregion Main
func affich_id_ctrl()
MsgBox(0,"",$Tree_Cc)
EndFunc
#region Controls
Func get_focus($ind_control,$nom_control)
;~ Donne le focus à un contrôle en fonction d'un indice s'il n'a pas le focus. Renvoie la valeur vraie
switch $ind_control
case 0
;~ Le controle est un bouton de commande
if _GUICtrlButton_GetFocus($nom_control) = false Then
_GUICtrlButton_SetFocus($nom_control)
EndIf
Return _GUICtrlButton_GetFocus($nom_control)
EndSwitch
EndFunc
func edit_listview_by_treeview()
#comments-start 01.08.2012
Fonction permettant de rafraîchir la listview à partir de l'arbre, en passant par un tableau. Ceci s'opère sur la sélection d'un item de l'arbre.
1. On récupère l'ID de l'item si actif, puis on récupère sa valeur
#comments-end 01.08.2012
$item = GUICtrlRead($Tree_Cc)
$chainecc = guictrlread($item,1)
MsgBox(0,"",$chainecc)
EndFunc
#endregion Controls
#region Listviewfunction
func create_listview()
#comments-start 20.07.2012
Fonction permettant de créer une listview à partir du fichier d'import
Cette fonction charge les enregistrements dans un tableau, n'en garde que quatre
La cinquième colonne doit être modifiable, et ses valeurs sont modifiées par l'opérateur
#comments-end 20.07.2012
$tnb_ligne = init_var_listview()
Dim $indice_ecriture = 0, $i = 1
$T_Array = array_generate($indice_ecriture)
Local $exStyles = bitor($LVS_EDITLABELS,$LVS_EX_FULLROWSELECT)
$List_Of = GUICtrlCreateListView("", 284, 24, 569, 161)
_GUICtrlListView_SetExtendedListViewStyle($List_Of, $exStyles)
GUISetState()
create_listview_columns($List_Of)
_GUICtrlListView_AddArray($List_Of, $T_Array)
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($List_Of),0)
EndFunc ;==>create_Listview_chk
Func init_var_listview()
; Retourne le nombre de lignes contenues dans le fichier d'import
$file_import = "FichierImport.txt"
return _FileCountLines($filechemin & $slash & $file_import)
EndFunc
Func create_listview_columns($List)
; Ajoute les colonnes de la listview et récupère leur indice
$ind_col1 = _GUICtrlListView_AddColumn($List, "ID", 80)
$ind_col2 = _GUICtrlListView_AddColumn($List, "PN", 80)
$ind_col3 = _GUICtrlListView_AddColumn($List, "SE", 80)
$ind_col4 = _GUICtrlListView_AddColumn($List, "Centre de Charge", 140)
$ind_col5 = _GUICtrlListView_AddColumn($List, "N° FA", 185)
EndFunc
Func valide_fa()
#comments-start
Permet de récupérer la valeur contenue dans $txt_fa et donne le focus au bouton $valide_fa
Si le bouton a le focus, alors on appelle la fonction d'écriture dans la colonne
#comments-end
$codefa = GUICtrlRead($Txt_FA)
$focus = get_focus(0,$Valide_FA)
if $focus = true then write_in_listview_column($codefa)
EndFunc
Func write_in_listview_column($chainefa)
;~ Ecrit dans la dernière colonne à la ligne sélectionnée à partir d'un inputbox
If $chainefa <> "" Then
$iligne = _GUICtrlListView_GetSelectedIndices($List_Of)
if $iligne <> 0 then
;~ Probleme rencontré, ne récupère pas la valeur en cours pour effectuer une concaténation de chaine avec séparateur ","
$chainefatemp = _GUICtrlListView_GetItemText($List_Of,$iligne,$ind_col5)
$chainefa = $chainefa & "," & $chainefatemp
_GUICtrlListView_SetItemText($List_Of,$iligne,$chainefa,$ind_col5)
EndIf
Else
alert_msg(2)
EndIf
EndFunc
Func write_fa()
$listfocus = get_focus(0,$List_Of)
if $listfocus = true Then
$ligne_select = _GUICtrlListView_GetSelectedIndices($List_Of)
GUICtrlSetData($Txt_FA,_GUICtrlListView_GetItemText($List_Of,$ligne_select,4))
EndIf
EndFunc
#endregion Listviewfunction
#region treefunction
Func create_treeitem_lv1()
; Crée un arbre à partir du fichier de centre de charges
$tnb_ligne = init_var_treeview()
dim $Tchaine[$tnb_ligne]
$Tree_Cc = GUICtrlCreateTreeView(24, 24, 189, 161,$TVS_EDITLABELS,$WS_EX_CLIENTEDGE)
_FileReadToArray($file_Cc, $Tchaine)
;~ _ArrayDisplay($Tchaine)
_GUICtrlTreeView_BeginUpdate($Tree_Cc)
For $x = 1 To $tnb_ligne
$Chaine = $Tchaine[$x]
_GUICtrlTreeView_Add($Tree_Cc, 0, $Chaine)
Next
_GUICtrlTreeView_EndUpdate($Tree_Cc)
EndFunc
Func init_var_treeview()
; Retourne le nombre de lignes contenues dans le fichier des centres de charge
$file_Cc = "Centre_Charge.txt"
$filechemin = @ScriptDir
$nb_line_cc = _FileCountLines($filechemin & $slash & $file_Cc)
return $nb_line_cc
EndFunc
#endregion treefunction
#region Fichiers
Func open_file($file,$ind_error)
if FileExists($filechemin & $slash & $file) Then
FileOpen($filechemin & $slash & $file,0)
Else
alert_msg($ind_error)
Exit
EndIf
EndFunc
Func close_file($file)
FileClose ($filechemin & $slash & $file)
endfunc
#endregion Fichiers
#region DBO
Func array_generate($indice_ecriture)
#comments-start
Permet de créer un tableau de visualisation d'enregistrements à partir du tableau où sont implémentées les informations du fichier d'extraction.
Initialise un autre tableau avec les valeurs d'enregistrements uniques, et enfin en crée un troisième pour effacer les valeurs vides se trouvant après
le dernier indice écrit.
Ce dernier tableau est lui-même renvoyé vers la listview pour recevoir un traitement ultérieur
#comments-end
Dim $text,$i
;Importe le contenu du fichier texte dans un tableau à une dimension
If Not _FileReadToArray($file_import, $text) Then
MsgBox(4096, "Error", " Erreur de lecture dans le tableau, code_erreur : " & @error)
Exit
EndIf
Dim $TOf[$text[0]+1][5]
;sépare les données du tableau dans les colonnes d'un second tableau
DIM $chainetemp
For $x = 1 To $tnb_ligne
$array = StringSplit($text[$x], " ")
if $array[1] <> $chainetemp then
$TOf[$indice_ecriture][0] = $array[1]
$TOf[$indice_ecriture][1] = $array[7]
$TOf[$indice_ecriture][2] = $array[2]
$TOf[$indice_ecriture][3] = $array[9]
$TOf[$indice_ecriture][4] = ""
if $TOf[$indice_ecriture][0] <> "" then $indice_ecriture = $indice_ecriture +1
EndIf
$chainetemp = $array[1]
If $x = $tnb_ligne then ExitLoop
Next
Dim $TResultOf[$indice_ecriture+1][5]
;~ On récupère seulement les valeurs remplies du $TOf et on les insère dans $TResultOf, une fois fait, on retourne $TResultOf et ses valeurs
for $i = 1 to $indice_ecriture
$TResultOf[$i][0] = $TOf[$i][0]
$TResultOf[$i][1] = $TOf[$i][1]
$TResultOf[$i][2] = $TOf[$i][2]
$TResultOf[$i][3] = $TOf[$i][3]
$TResultOf[$i][4] = $TOf[$i][4]
next
Return $TResultOf
EndFunc
#endregion DBO
J'ai joint les deux fichiers txt à partir desquels le script fonctionne.
Nota : le même soucis existe pour la listview, mais je pense qu'une fois le soucis résolu sur l'un, il le sera sur l'autre.
Merci de votre aide