Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Global $wordpath = StringTrimRight(RegRead("HKEY_CLASSES_ROOT\Word.Document.8\DefaultIcon", ""), 2)
Global $ini = @scriptdir & "\List.ini"
Global $ligne = ""
Global $contenuini = _ReadZeIni($ini)
If @error Then MsgBox (64, "Info", "La liste de TP est vide ou absente ") ; si ini pas trouvé ou corrompu
#Region ### START Koda GUI section ### Form=l:\documents gaspard\programmation\autoit\projets\printer lycée\printer final édition\printer gui.kxf
Global $gui = GUICreate("Impression dynamique des TP", 346, 402, 297, 130)
Global $editer = GUICtrlCreateButton("Editer le TP", 8, 272, 159, 25, $BS_NOTIFY)
Global $imprimer1 = GUICtrlCreateButton("Imprimer le TP", 172, 272, 167, 25, $BS_NOTIFY)
Global $ajouter = GUICtrlCreateButton("Ajouter un TP à la liste", 172, 304, 167, 25, $BS_NOTIFY)
Global $supprimer1 = GUICtrlCreateButton("Supprimer le TP de la liste", 8, 304, 159, 25, $BS_NOTIFY)
Global $imprimertout = GUICtrlCreateButton("Imprimer toute la liste", 8, 336, 159, 25, $BS_NOTIFY)
Global $supprimertout = GUICtrlCreateButton("Supprimer toute la liste", 172, 336, 167, 25)
Global $about = GUICtrlCreateButton("Informations", 8, 368, 159, 25)
Global $quitter = GUICtrlCreateButton("Quitter", 172, 368, 167, 25)
Global $ListView1 = GUICtrlCreateListView("Nom du TP|" &"Chemin", 8, 8, 330, 254)
GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 0, 95)
GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 1, 230)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
If $contenuini<> "" Then
Dim $ligne[UBound($contenuini)] ; 2ème array ($ligne) pour stocker les handles des items
For $i = 0 To UBound($contenuini)-1
$ligne[$i] = GUICtrlCreateListViewItem($contenuini[$i][0]&"|"& $contenuini[$i][1], $ListView1)
GUICtrlSetImage(-1, $wordpath, -1)
Next
EndIf
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $quitter
_WriteInZeIni($ini)
Exit
Case $supprimer1
$index = ControlListView($gui, "", $ListView1, "GetSelected")
If $index = "" Then
MsgBox (0, "Erreur", "Aucun TP séléctioné!")
Else
GUICtrlDelete($ligne[$index])
_ArrayDelete($ligne, $index)
_ArrayDelete($contenuini, $index)
_WriteInZeIni($ini)
EndIf
Case $supprimertout
$variable = ControlListView ($gui, "", $ListView1, "GetItemCount")
For $i = 0 To $variable-1
GUICtrlDelete($ligne[$i])
Next
$ligne = ""
$contenuini = ""
FileDelete($ini)
Case $ajouter
$cheminTP = FileOpenDialog("choisir...", @DesktopDir & "\", "Documents word (*.doc)|Documents word (*.xdoc)")
If Not @error Then
$nomdutp = InputBox ("Nom du TP", "Choisissez un nom du tp pour l'affichage dans la liste : ")
If $nomdutp <> "" Then
If $ligne = "" Then
Dim $ligne[1]
Dim $contenuini[1][2]
$prevnb = 0
Else
$prevnb = UBound($contenuini)
ReDim $contenuini[$prevnb+1][2]
ReDim $ligne[$prevnb+1]
EndIf
$contenuini[$prevnb][0] = $nomdutp
$contenuini[$prevnb][1] = $cheminTP
$ligne[$prevnb] = GUICtrlCreateListViewItem($contenuini[$prevnb][0] &"|" & $contenuini[$prevnb][1], $ListView1)
GUICtrlSetImage(-1, $wordpath, -1)
_WriteInZeIni($ini)
Else
MsgBox (0, "Erreur", "Vous devez choisir un nom pour le ficher!")
EndIf
Else
MsgBox (0, "Erreur", "Vous devez choisir un fichier!")
EndIf
Case $editer
$index = ControlListView($gui, "", $ListView1, "GetSelected")
If $index = "" Then
MsgBox (0, "Erreur", "Aucun TP séléctioné!")
Else
; $contenuini = _ReadZeIni($ini)
ShellExecute ($contenuini[$index][1])
EndIf
Case $imprimer1
$index = ControlListView($gui, "", $ListView1, "GetSelected")
If $index = "" Then
MsgBox (0, "Erreur", "Aucun TP séléctioné!")
Else
; récupération du chemin par lecture de la listview
; $path_tp = ControlListView($gui, "", $ListView1, "GetText", $index, 1)
; MsgBox (0, "debug", $path_tp)
; récupération du chemin par lecture de l'array
MsgBox (0, "debug", $contenuini[$index][1])
; $contenuini = _ReadZeIni($ini) ; <<<< pas nécessaire !
; ShellExecute ($contenuini[$index][1], "", "", "print")
EndIf
Case $imprimertout
$variable = ControlListView ($gui, "", $ListView1, "GetItemCount")
For $i = 0 To $variable-1
; MsgBox (0, "debug", $contenuini[$i][1])
ShellExecuteWait ($contenuini[$i][1], "", "", "print")
Next
EndSwitch
WEnd
Func _WriteInZeIni($file) ;
FileDelete($file)
For $i = 0 To UBound($contenuini)-1
IniWrite($file, $i, $contenuini[$i][0], $contenuini[$i][1])
Next
EndFunc
Func _ReadZeIni($file)
$variable = IniReadSectionNames($file)
If @error Then
SetError(1)
Return
EndIf
Dim $contenuini[$variable[0]][2]
For $i = 1 To $variable[0]
$readsection = IniReadSection($ini, $variable[$i])
$contenuini[$i-1][0] = $readsection[1][0]
$contenuini[$i-1][1] = $readsection[1][1]
Next
Return $contenuini
EndFunc