J'ai trouvé une erreur
Return SetError(1)
Return ne fonctionne que dans une fonction.
Il y a aussi des choses bizarres comme GUICtrlSetImage() ???
Pour le reste, je suis resté dans votre état d'esprit bien que personnellement j'utilise WM_NOTIFY pour les listviews (voir l'exemple de _GUICtrlListView_GetHotItem() )
Un conseil pour finir, par précaution je demanderais un enregistrement du Ini à la fermeture de la gui et sans le modifier en même temps que la listview pour éviter les erreurs de manipulation (un peu comme Excel Word ou autres)
J'ai pas tout vérifié (trop fainéant)
Code : Tout sélectionner
#include <GuiConstantsEx.au3>
#include <ListviewConstants.au3>
#include <Array.au3>
Global $ini = @scriptdir & "\testini.ini"
Global $array = _ReadZeIni($ini) ; lecture du ini => 1ère array ($array) pour stocker les infos
If @error Then ; si le ini est absent, corrompu ou vide
FileCopy($ini, @scriptdir & "\test.bak") ; sauvegarde si corrompu
FileDelete($ini) ; recréation nouveau ini
Dim $array[0][2] ; array par défaut
EndIf
; _ArrayDisplay($array)
$gui = GUICreate("liste des Litiges", 582, 280, -1, -1, -1)
GUISetBkColor(0x99B4D1)
$listview2 = GUICtrlCreateListView("|" &"soft", 370, 40, 200, 130, $LVS_NOCOLUMNHEADER,BitOR($LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
$listview = GUICtrlCreateListView("|" &"soft", 10, 40, 200, 130, $LVS_NOCOLUMNHEADER,BitOR($LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 0, 80)
GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 1, 320)
GUICtrlSendMsg($listview2, $LVM_SETCOLUMNWIDTH, 0, 80)
GUICtrlSendMsg($listview2, $LVM_SETCOLUMNWIDTH, 1, 320)
; remplissage de la listview
Dim $ligne[UBound($array)] ; 2ème array ($ligne) pour stocker les handles des items
For $i = 0 To UBound($array)-1
$ligne[$i] = GUICtrlCreateListViewItem($array[$i][0] &"|" & $array[$i][1], $listview)
;GUICtrlSetImage(-1, $array[$i][1], -0) => image ???
Next
$ajoute = GuiCtrlCreateButton("Ajouter", 30, 220, 120, 25)
$degage = GuiCtrlCreateButton("Supprimer", 250, 130, 80, 25)
$Nserie = GUICtrlCreateInput("", 30, 190, 120, 25)
$Transferer = GuiCtrlCreateButton("<<< Tranférer >>>", 240, 70, 100, 25)
$Label = GUICtrlCreateLabel("Litige à traiter", 40, 10, 200, 25)
$Label = GUICtrlCreateLabel("Litige Résolu", 400, 10, 200, 25)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case -3
_WriteInZeIni($ini)
Exit
Case $Transferer
$itemID = GUICtrlRead($listview); ID de l'item
If $itemID > 0 Then
$item = GUICtrlRead(GUICtrlRead($listview));valeur text de l'item
GUICtrlDelete($itemID)
GUICtrlCreateListViewItem($item, $listview2)
EndIf
$itemID = GUICtrlRead($listview2); ID de l'item
If $itemID > 0 Then
$item = GUICtrlRead(GUICtrlRead($listview2));valeur text de l'item
GUICtrlDelete($itemID)
GUICtrlCreateListViewItem($item, $listview)
EndIf
$itemID = 0
Case $degage
$index = ControlListView($gui, "", $listview, "GetSelected")
If $ligne <>"" Then
GUICtrlDelete($ligne[$index])
_ArrayDelete($ligne, $index)
_ArrayDelete($array, $index)
_WriteInZeIni($ini)
EndIf
Case $ajoute
If $ligne = "" Then
Dim $ligne[1]
Dim $array[1][2]
$prevnb = 0
Else
$prevnb = UBound($array)
ReDim $array[$prevnb+1][2]
ReDim $ligne[$prevnb+1]
EndIf
$var = GUICtrlRead($Nserie)
If $var = "" Then
MsgBox(0,"Erreur",'Veuillez Saisir un Litige')
;Return SetError(1) => erreur à sup
Else
$TIME = @MDAY &"/"& @MON &"/"& @YEAR
If not @error Then
$array[$prevnb][0] = $TIME
$array[$prevnb][1] = $var
$ligne[$prevnb] = GUICtrlCreateListViewItem($array[$prevnb][0] &"|" & $array[$prevnb][1], $listview)
;GUICtrlSetImage(-1, $array[$prevnb][1], -1) => image ????
_WriteInZeIni($ini)
GUICtrlSetData($Nserie,"")
EndIf
EndIf
EndSwitch
Wend
Func _WriteInZeIni($file)
FileDelete($file) ; on peut faire un backup avant
For $i = 0 To UBound($array)-1
IniWrite($file, $i, $array[$i][0], $array[$i][1])
Next
EndFunc
Func _ReadZeIni($file)
$var = IniReadSectionNames($file)
If @error Then
SetError(1)
Return
EndIf
Dim $array[$var[0]][2]
For $i = 1 To $var[0]
$readsection = IniReadSection($ini, $var[$i])
$array[$i-1][0] = $readsection[1][0]
$array[$i-1][1] = $readsection[1][1]
Next
Return $array
EndFunc :P
Pour le transfère, il n'y a qu'un bouton. Le choix de la copie (vers la droite ou l’inverse) se fait par la sélection de l'item de la listview