j'aimerais alimenter une liste view à partir d'un fichier glissé sur la GUI.
Voici un extrait de mon code
je ne comprends pas pourquoi, j'ai un erreur "Unknown macro" ligne 107
je suis bien en Opt("GUIOnEventMode", 1)
D'avance merci pour vos réponses.
Fred
► Afficher le texte
Code : Tout sélectionner
#include <GuiConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListBoxConstants.au3>
#include <ListViewConstants.au3>
#include <GUIListView.au3>
#include <inet.au3>
#include <array.au3>
#include <File.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <GuiListBox.au3>
#include <GuiComboBox.au3>
;---------------------------------------------------------------------------------------------------------------------------------------
; Définition des variables globales
;---------------------------------------------------------------------------------------------------------------------------------------
;Mode de prise en compte des évenements
Opt("GUIOnEventMode", 1)
; tableau contenant la liste des commandes
dim $a_lst_commandes
;---------------------------------------------------------------------------------------------------------------------------------------
; Définition de la GUI
;---------------------------------------------------------------------------------------------------------------------------------------
$GUI = GUICreate("test", 712, 468, 192, 126)
;Le groupe commandes
$Grp_Commandes = GUICtrlCreateGroup("commandes", 8, 8, 432, 377)
;La liste View des commandes
$Lst_Commandes = _GUICtrlListView_Create($GUI, "", 10, 25, 428, 356, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS,$LVS_NOSORTHEADER ))
_GUICtrlListView_SetExtendedListViewStyle($Lst_Commandes, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
; Création des colonnes dans la listeView
_GUICtrlListView_InsertColumn($Lst_Commandes, 0, "sel", 30)
_GUICtrlListView_InsertColumn($Lst_Commandes, 1, "GO", 30)
_GUICtrlListView_InsertColumn($Lst_Commandes, 2, "COMMANDES", 3350)
$grp_actions = GUICtrlCreateGroup("", 448, 130, 257, 110)
$Bt_ouvrir_fichier_commandes=GUICtrlCreateButton("ouvrir", 450,145,120,25,0)
$Bt_Quitter = GUICtrlCreateButton("Quitter", 308, 424, 105, 33)
;---------------------------------------------------------------------------------------------------------------------------------------
; Affichage GUI
;---------------------------------------------------------------------------------------------------------------------------------------
GUICtrlSetState($GUI,$GUI_DROPACCEPTED)
GUISetState(@SW_SHOW)
;Evenements
While 1
GUISetOnEvent($GUI_EVENT_CLOSE, "Fin")
GUICtrlSetOnEvent($Bt_Quitter, "Fin")
GUICtrlSetOnEvent($Bt_ouvrir_fichier_commandes,"_ouvrir_fichier_de_commandes")
GUISetOnEvent($GUI_EVENT_DROPPED,_def_listeview("drag-drop"))
WEnd
;---------------------------------------------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------------------------------------------
;*********************
;*********************
;** Les Fonctions **
;*********************
;*********************
;---------------------------------------------------------------------------------------------------------------------------------------
; _ouvrir_fichier_de_commandes
; ouverture du fichier contenant les commandes, pour alimenter la listview
;---------------------------------------------------------------------------------------------------------------------------------------
Func _ouvrir_fichier_de_commandes()
$Fichier_commandes=FileOpenDialog(@ScriptName, @ScriptDir&"\","All (*.*)" ,7)
if @error Then
MsgBox(4096,@ScriptName,"Pb lors de la selection du fichier Erreur : "&@error)
Return
EndIf
_def_listeview($Fichier_commandes)
EndFunc
;---------------------------------------------------------------------------------------------------------------------------------------
; _def_listeview
; definition de la listeview à partir du fichier importé
;---------------------------------------------------------------------------------------------------------------------------------------
Func _def_listeview($param_fichier)
if $param_fichier=="drag-drop" Then ;ici on test si la fonction est appelé par un drag and drop
$param_fichier=@GUI_DragFile
EndIf
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($Lst_Commandes)); on efface les commandes précedentes
If Not _FileReadToArray($param_fichier, $a_lst_commandes) Then ;on place le contenu du fichier dans le tableau
MsgBox(0,@scriptname,"Problème pour lire "&$param_fichier&@CRLF&"code erreur : " & @error)
Return
EndIf
;suppression des lignes vides
_ArrayDisplay($a_lst_commandes)
for $i=1 to UBound($a_lst_commandes)-1
$item=_GUICtrlListView_AddItem($Lst_Commandes,"",0 )
_GUICtrlListView_AddSubItem($Lst_Commandes, $item, $a_lst_commandes[$i], 2)
Next
Return
EndFunc
;---------------------------------------------------------------------------------------------------------------------------------------
; _ArrayDeleteEmptyRows
; supprime les lignes vides d'un tableau http://www.autoitscript.fr/forum/viewtopic.php?f=21&t=9856
;---------------------------------------------------------------------------------------------------------------------------------------
Func _ArrayDeleteEmptyRows(ByRef $_array)
Local $dims = UBound($_array, 0), $fired = 0
If not IsArray($_array) Or $dims > 2 Then Return
Switch $dims
Case 1 ; array 1D
Local $temp[UBound($_array)]
For $i = 0 To UBound($_array)-1
If $_array[$i] = "" Then ; si ligne vide (ou autre condition)
$fired += 1
ContinueLoop ; passe à la ligne suivante
EndIf
$temp[$i-$fired] = $_array[$i]
Next
Redim $temp[UBound($_array)-$fired]
Case 2 ; array 2D
Local $cols = UBound($_array, 2), $row = ""
Local $temp[UBound($_array)][$cols]
For $i = 0 To UBound($_array)-1
For $j = 0 To $cols-1
$row &= $_array[$i][$j] ; concatène la ligne
Next
If $row = "" Then ; si ligne vide (ou autre condition)
$fired += 1
ContinueLoop ; passe à la ligne suivante
EndIf
For $j = 0 To $cols-1
$temp[$i-$fired][$j] = $_array[$i][$j]
Next
$row = ""
Next
Redim $temp[UBound($_array)-$fired][$cols]
EndSwitch
$_array = $temp
$temp = ""
EndFunc
Func Fin()
_GUICtrlListView_UnRegisterSortCallBack($Lst_Commandes)
GUIRegisterMsg($WM_NOTIFY, "")
Exit
GUIDelete($GUI)
EndFunc ;==>Fin


