#include #include #include #include #include #include #include ; #FUNCTION# ==================================================================================================================== ; Name ..........: SecondaryFunc ; Description ...: Pour servir d'exemple ; Syntax ........: SecondaryFunc(Byref $aFile, $iExemple) ; Parameters ....: $aFile - [in/out] an array of unknowns. ; $iExemple - an integer value. ; Return values .: None ; Author ........: Numeric ; =============================================================================================================================== ; #FUNCTION# ==================================================================================================================== ; Name ..........: FileDisplay ; Description ...: ; Syntax ........: FileDisplay(Byref $aFile, $allItemIDbySplit_Virgule, $USER_Func, $iParam1, $iParam2) ; Parameters ....: $aFile - [in/out] an array of unknowns. ; $allItemIDbySplit_Virgule- an array of unknowns. ; $USER_Func - an unknown value. ; $iParam1 - an integer value. ; $iParam2 - an integer value. ;Author ........: Numeric ; Return values .: None ; Example .......: FileDisplay($aFile,'voir details, supprimer,voir infos, internet' ,SecondaryFunc,$iFile,'') ; =============================================================================================================================== Func FileDisplay(ByRef $aFile, $allItemIDbySplit_Virgule, $USER_Func ,$USER_Func2, $iParam1 ='',$iParam2 ='') Local $idDimension, $allItem ;To prevent the lines : $USER_Func($iParam1) and $USER_Func2($iParam2) If Not IsFunc($USER_Func) Then Return SetError(1,1,MsgBox(16,'Error','Function not Found',2)) If Not IsFunc($USER_Func2) Then Return SetError(2,1,MsgBox(16,'Error','Function not Found',2)) ;Test de dimensions $idDimension = ArrayDimensions($aFile) ;Cette fonction retourne 1 pour 1D et 2 pour 2D If $idDimension = 1 Then ;Si tableau 1D Switch__MenuItem1D($aFile, $allItemIDbySplit_Virgule ,$USER_Func, $USER_Func2, $iParam1, $iParam2) ;Fonction pour 1D Array ElseIf $idDimension = 2 Then ;Si Tableau 2D Switch__MenuItem2D($aFile, $allItemIDbySplit_Virgule, $USER_Func, $USER_Func2, $iParam1, $iParam2) ;Fonction pour 2D Array Else ;Sinon Erreur Return SetError(3,1,-1) EndIf EndFunc ;=======>FileDisplay ; #FUNCTION# ==================================================================================================================== ; Name ..........: Switch__MenuItem1D ; Description ...: ; Syntax ........: Switch__MenuItem1D(Byref $aFile, $allItemIDbySplit_Virgule, $USER_Func, $iParam1, $iParam2) ; Parameters ....: $aFile - [in/out] an array of unknowns. ; $allItemIDbySplit_Virgule- an array of unknowns. ; $USER_Func - an unknown value. ; $iParam1 - an integer value. ; $iParam2 - an integer value. ; Return values .: None ; Author ........: Numeric ; Example .......: utilise en interne avec la fonction: FileDisplay ; =============================================================================================================================== Func Switch__MenuItem1D(ByRef $aFile, $allItemIDbySplit_Virgule, $USER_Func,$USER_Func2, $iParam1 ='', $iParam2 ='') Local $Form1 = GUICreate(" ", 615, 474, 192, 124, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_TABSTOP)) Local $List1 = GUICtrlCreateListView("ListView",-1, 24, 4074, 3081, 0) GUISetState(@SW_SHOW,$Form1) ;Local variable Local $hdlArray[1000][1000] ;Stockage des donnees If $allItemIDbySplit_Virgule <>'' Then $allItem = StringSplit($allItemIDbySplit_Virgule,',') For $i = 1 To $aFile[0] $hdlArray[$i-1][0] = GUICtrlCreateListViewItem($aFile[$i], $List1) My_GUICtrlListView_AutoSizeColumns($List1) $hdlArray[$i-1][1] = GUICtrlCreateContextMenu($hdlArray[$i-1][0]) For $j = 1 To $allItem[0] $hdlArray[$i-1][$j+1] = GUICtrlCreateMenuItem($allItem[$j], $hdlArray[$i-1][1]) Next Next EndIf While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE ExitLoop Case Else For $i = 0 To $aFile[0] For $j = 0 To $allItem[0]+1 If ($hdlArray[$i][$j] == $nMsg) Then If $j = 0 Then If ($hdlArray[$i][$j] == $nMsg) Then $USER_Func($iParam1) Else $USER_Func2($iParam2) EndIf EndIf Next Next EndSwitch WEnd EndFunc Func Switch__MenuItem2D(ByRef $aFile, $allItemIDbySplit_Virgule, $USER_Func,$USER_Func2, $iParam1 ='', $iParam2 ='') ;#Gui_Conception Local $Form1 = GUICreate(" ", 615, 474, 192, 124, _ BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_TABSTOP)) Local $List1 = GUICtrlCreateListView("ListView",-1, 0, 622, 461, 0) GUISetState(@SW_SHOW,$Form1) ;Local variable Local $hdlArray[1000][1000] ;Stockage des donnees If $allItemIDbySplit_Virgule <>'' Then $allItem = StringSplit($allItemIDbySplit_Virgule,',') For $i = 1 To $aFile[0][0] $hdlArray[$i-1][0] = GUICtrlCreateListViewItem($aFile[$i][0]&$aFile[$i][1],$List1) ;$hdlArray[$i-1][1] = GUICtrlCreateListViewItem($aFile[$i][1], $List1) ;Fonction pour Regler les conlonnes My_GUICtrlListView_AutoSizeColumns($List1) ;Stockage des ID dans dans le tableau : $hdlArray[1000][1000] $hdlArray[$i-1][1] = GUICtrlCreateContextMenu($hdlArray[$i-1][0]) For $j = 1 To $allItem[0] $hdlArray[$i-1][$j+1] = GUICtrlCreateMenuItem($allItem[$j], $hdlArray[$i-1][1]) Next Next EndIf While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE ExitLoop Case Else For $i = 0 To UBound($aFile,1) For $j = 0 To UBound($allItem) If ($hdlArray[$i][$j] == $nMsg) Then If ($hdlArray[$i][$j] == $nMsg) Then If $j = 0 Then If ($hdlArray[$i][$j] == $nMsg) Then $USER_Func($iParam1) Else $USER_Func2($iParam2) EndIf EndIf EndIf Next Next EndSwitch WEnd EndFunc ; #FUNCTION# ==================================================================================================================== ; Name ..........: User_Func_MenuItem ; Description ...: ; Syntax ........: User_Func_MenuItem(Byref $USER_Func[, $iParam1 = ''[, $iParam2 = '']]) ; Parameters ....: $USER_Func - [in/out] an unknown value. ; $iParam1 - [optional] an integer value. Default is ''. ; $iParam2 - [optional] an integer value. Default is ''. ; Return values .: None ; Author ........: Numeric ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func User_Func_MenuItem($USER_Func) ;Require Function If Not IsFunc($USER_Func) Then Return SetError(4,1,'') EndFunc ;========>User_Func_MenuItem(ByRef $USER_Func, $iParam1 ='', $iParam2 ='') ; #FUNCTION# ==================================================================================================================== ; Name ..........: ArrayDimensions ; Description ...: ; Syntax ........: ArrayDimensions(Byref $aArray[, $ReturnType = 0]) ; Parameters ....: $aArray - [in/out] an array of unknowns. ; $ReturnType - [optional] an unknown value. Default is 0. ; Return values .: None ; Author ........: Numeric ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func ArrayDimensions(ByRef $aArray) Local $iDimension $iDimension = UBound($aArray, $UBOUND_DIMENSIONS) If $iDimension > 2 Then Return SetError(1,0,MsgBox(16,'Error','Invalid Array Type:Larger than 2D array passed',3)) Exit EndIf Return $iDimension EndFunc;==========> ArrayDimensions(ByRef $aArray, $ReturnType = 0) ; #FUNCTION# ==================================================================================================================== ; Name ..........: My_GUICtrlListView_AutoSizeColumns ; Description ...: ; Syntax ........: My_GUICtrlListView_AutoSizeColumns($idListview[, $iMini = 80]) ; Parameters ....: $idListview - an integer value. ; $iMini - [optional] an integer value. Default is 80. ; Return values .: None ; Author ........: ????? sur le forum Français AutoIt ; Modified ......: Numeric ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func My_GUICtrlListView_AutoSizeColumns($idListview, $iMini = 80) If Not IsHWnd($idListview) Then $idListview = GUICtrlGetHandle($idListview) Local $hHeader = _GUICtrlListView_GetHeader($idListview), $iHeader_Width, $iData_Width _GUICtrlListView_BeginUpdate($idListview) For $iIndex = 0 To _GUICtrlListView_GetColumnCount($idListview) - 1 If _GUICtrlListView_GetColumnWidth($idListview, $iIndex) = 0 Then ContinueLoop _GUICtrlListView_SetColumnWidth($idListview, $iIndex, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($idListview, $iIndex) If @OSVersion = "WIN_XP" And $iIndex < _GUICtrlListView_GetColumnCount($idListview) - 1 Then If _GUICtrlHeader_GetItemFlags($hHeader, $iIndex) / 2 > 1 Then $iHeader_Width += 30 EndIf _GUICtrlListView_SetColumnWidth($idListview, $iIndex, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($idListview, $iIndex) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($idListview, $iIndex, $iHeader_Width) EndIf If _GUICtrlListView_GetColumnWidth($idListview, $iIndex) < $iMini Then _GUICtrlListView_SetColumnWidth($idListview, $iIndex, $iMini) EndIf Next _GUICtrlListView_EndUpdate($idListview) EndFunc ;==>My_GUICtrlListView_AutoSizeColumns