vous listez par exemple le nombre d'ordinateurs connectés sur votre serveur : (votre petit programme de tchat)
Mr gogo gaga est bizzzzarrrd
vous souhaitez du tableau faire un clic droit et 'BOOOMMM' gogo gaga est déconnecté
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é
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