Code : Tout sélectionner
#include <Constants.au3>
#include <Array.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
Dim $GUI_LISTE_ITEM[5][5]
Dim $TEXTE_BIDON[5] = ["texte ligne 1", "texte ligne 2", "texte ligne 3", "texte ligne 4", "texte ligne 5 blablabla"]
$NB_ELEMENTS = 1
Const $NBTICKET = 4
Dim $MEMOTICKET[$NBTICKET + 1] = ["1er ticket", "2me ticket", "3me ticket", "4me ticket", "5me ticket"]
$IDXCLP = 2 ; pointeur sur le ticket "actif"
$GUI_FENETRE = ""
$RECREATION = 0
$GUI_LISTE_TICKETS = ""
$GUI_BUTTON_INF = ""
$GUI_BUTTON_SUP = ""
Func gui_clic_close()
EndFunc ;==>gui_clic_close
Func GUI_ticketchoix()
;; $TICKET_AFFICHE_COURANT = GUICtrlRead($GUI_LISTE_TICKETS)
;; GUI_Refresh_items()
EndFunc ;==>GUI_ticketchoix
Func GUI_ticketINF()
$IDXCLP -= 1
GUI_Refresh_items()
EndFunc ;==>GUI_ticketINF
Func GUI_ticketSUP()
$IDXCLP += 1
GUI_Refresh_items()
EndFunc ;==>GUI_ticketSUP
Func GUI_Refresh_items()
If $RECREATION Then
;
;
; ça c'est la méthode par recréation.......
If $GUI_FENETRE <> "" Then
; menage des elements de la fenetre
For $CPT = 1 To $GUI_LISTE_ITEM[0][0]
For $CPT2 = 4 To 0 Step -1
GUICtrlSetOnEvent($GUI_LISTE_ITEM[$CPT][$CPT2], "")
GUICtrlDelete($GUI_LISTE_ITEM[$CPT][$CPT2])
Next
Next
GUIDelete($GUI_FENETRE)
$GUI_FENETRE = ""
$GUI_LISTE_ITEM[0][0] = 0
EndIf
$GUI_FENETRE = GUICreate("test-recreate", 460, 40 + ($NB_ELEMENTS * 23), 100, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "gui_clic_close")
$GUI_BUTTON_INF = GUICtrlCreateButton("<", 10, 5, 20, 20)
GUICtrlSetColor(-1, 0x004f00)
GUICtrlSetFont(-1, 8.5, 1600)
GUICtrlSetOnEvent(-1, "GUI_ticketINF")
; création de la dropdown à vide.
$GUI_LISTE_TICKETS = GUICtrlCreateCombo("", 35, 5, 200, 20, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetOnEvent(-1, "GUI_ticketchoix")
; création du ">"
$GUI_BUTTON_SUP = GUICtrlCreateButton(">", 240, 5, 20, 20)
GUICtrlSetColor(-1, 0x004f00)
GUICtrlSetFont(-1, 8.5, 1600)
GUICtrlSetOnEvent(-1, "GUI_ticketSUP")
$BIDON = ""
For $CPT = 1 To $NBTICKET
$BIDON &= $MEMOTICKET[$CPT] & "|"
Next
$BIDON = StringTrimRight($BIDON, 1)
GUICtrlSetData($GUI_LISTE_TICKETS, "")
GUICtrlSetData($GUI_LISTE_TICKETS, $BIDON, $MEMOTICKET[$IDXCLP]) ; 2 au pif...
; controle de cohérence : on grise les touches si on est déja aux extrémités.
If $IDXCLP = 1 Then GUICtrlSetState($GUI_BUTTON_INF, $GUI_DISABLE)
If $IDXCLP = $NBTICKET Then GUICtrlSetState($GUI_BUTTON_SUP, $GUI_DISABLE)
For $CPT = 1 To $NB_ELEMENTS
$ITEM = $TEXTE_BIDON[$CPT]
$GUI_LISTE_ITEM[$CPT][4] = GUICtrlCreateEdit($ITEM, 5, ($CPT - 1) * 23 + 40, 295, 20, BitOR($ES_WANTRETURN, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
Next
GUISetState(@SW_SHOW)
Else
;
;
; ça c'est la méthode par winmove....
If $GUI_FENETRE <> "" Then
; menage des elements de la fenetre : chui obligé de garder ça, le contenu peut changer completement d'un affichage à l'autre.
For $CPT = 1 To $GUI_LISTE_ITEM[0][0]
For $CPT2 = 4 To 0 Step -1
GUICtrlSetOnEvent($GUI_LISTE_ITEM[$CPT][$CPT2], "")
GUICtrlDelete($GUI_LISTE_ITEM[$CPT][$CPT2])
Next
Next
$GUI_LISTE_ITEM[0][0] = 0
Else
; il faut qd meme créer la fenetre si il n'existe pas encore...
$GUI_FENETRE = GUICreate("test_winmove", 460, 40 + ($NB_ELEMENTS * 23), 100, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "gui_clic_close")
$GUI_BUTTON_INF = GUICtrlCreateButton("<", 10, 5, 20, 20)
GUICtrlSetColor(-1, 0x004f00)
GUICtrlSetFont(-1, 8.5, 1600)
GUICtrlSetOnEvent(-1, "GUI_ticketINF")
; création de la dropdown à vide.
$GUI_LISTE_TICKETS = GUICtrlCreateCombo("", 35, 5, 200, 20, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetOnEvent(-1, "GUI_ticketchoix")
; création du ">"
$GUI_BUTTON_SUP = GUICtrlCreateButton(">", 240, 5, 20, 20)
GUICtrlSetColor(-1, 0x004f00)
GUICtrlSetFont(-1, 8.5, 1600)
GUICtrlSetOnEvent(-1, "GUI_ticketSUP")
EndIf
;; $GUI_FENETRE = GUICreate("test", 460, 40 + ($NB_ELEMENTS * 23), 100, 100)
WinMove($GUI_FENETRE, "test", Default, Default, 460, 40 + ($NB_ELEMENTS * 23))
$BIDON = ""
For $CPT = 1 To $NBTICKET
$BIDON &= $MEMOTICKET[$CPT] & "|"
Next
$BIDON = StringTrimRight($BIDON, 1)
GUICtrlSetData($GUI_LISTE_TICKETS, "")
GUICtrlSetData($GUI_LISTE_TICKETS, $BIDON, $MEMOTICKET[$IDXCLP]) ; 2 au pif...
; controle de cohérence : on grise les touches si on est déja aux extrémités.
If $IDXCLP = 1 Then
GUICtrlSetState($GUI_BUTTON_INF, $GUI_DISABLE)
Else
GUICtrlSetState($GUI_BUTTON_INF, $GUI_ENABLE)
EndIf
If $IDXCLP = $NBTICKET Then
GUICtrlSetState($GUI_BUTTON_SUP, $GUI_DISABLE)
Else
GUICtrlSetState($GUI_BUTTON_SUP, $GUI_ENABLE)
EndIf
For $CPT = 1 To $NB_ELEMENTS
$ITEM = $TEXTE_BIDON[$CPT]
$GUI_LISTE_ITEM[$CPT][4] = GUICtrlCreateEdit($ITEM, 5, ($CPT - 1) * 23 + 40, 295, 20, BitOR($ES_WANTRETURN, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
Next
;; GUISetState(@SW_SHOW)
EndIf
EndFunc ;==>GUI_Refresh_items
While $NB_ELEMENTS <= 5
$NB_ELEMENTS = InputBox("test", "nb elements affichés:", $NB_ELEMENTS)
If $NB_ELEMENTS <= 5 Then
$RECREATION = number(InputBox("Test", "recréation 1=oui / 0=modif par winmove", $RECREATION))
GUI_Refresh_items()
EndIf
WEnd