[UDF] ArrayMaster

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 125
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

[UDF] ArrayMaster

#1

Message par Numeric »

Salut; :lol:
vous listez par exemple le nombre d'ordinateurs connectés sur votre serveur : (votre petit programme de tchat)

Mr gogo gaga est bizzzzarrrd :idea:
vous souhaitez du tableau faire un clic droit et 'BOOOMMM' gogo gaga est déconnecté :mrgreen:

1) vous aimeriez tant créer vos propres options : écrire :Voir les détails ou ajouter une note ou etc....
2) et par dessus tout vous aimeriez les contrôler, chacune de ces options
3)vous aimeriez écrire une MsgBox à la place du SplashText ou etc...
4) et tout ça sur chacun des éléments listés sur votre tableau
5) Je vous donne la clé :mrgreen:
:arrow:

Code : Tout sélectionner

#include <AutoItConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiHeader.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>


;#Region Exemple
$aFile = StringSplit('Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche',',')


  FileDisplay($aFile,'voir details, supprimer,voir infos, internet' ,SecondaryFunc,SecondaryFunc2,'AutoIt','Forum Français AutoIt')
;#End Region

Func SecondaryFunc($iMsgE)
	MsgBox(64,'',$iMsgE,1)
EndFunc

Func SecondaryFunc2($iMsgE)
	SplashTextOn("",$iMsgE, 450, 70, -1, -1, 0 + 1 + 16 + 32, _
	"Monotype Corsiva", 18, 800)
	Sleep(2000)
	SplashOff( )
EndFunc




; #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
Fichiers joints
ArrayMaster.au3
(10.87 Kio) Téléchargé 590 fois
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Répondre