Re: [R] Création d'une GUI d'après un fichier txt
Posté : jeu. 14 mars 2013 17:02
par mikell
Un peu d'optimisation, pour la présentation 

► Afficher le texte
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TabConstants.au3>
Global $img[3] = ["c:\Program Files\AutoIt3\Examples\GUI\msoobe.jpg", _
"c:\Program Files\AutoIt3\Examples\GUI\mslogo.jpg", _
"c:\Program Files\AutoIt3\Examples\GUI\merlin.gif"]
Global $nbr_de_bouton = 0, $nbr_de_tab = 0
Global $bouton_et_valeur[300][2], $TabSheet[300]
Global $Form1 = GUICreate("Programmes de " & @UserName, 617, 433, 192, 124)
Global $Tab1 = GUICtrlCreateTab(0, 0, 617, 385)
Global $Button1 = GUICtrlCreateButton("quitter", 500, 390, 75, 25)
_bouton() ; fonction pour la création de la gui avec bouton
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
Do ;boucle de la gui
$msg = GUIGetMsg()
For $i = 1 To $nbr_de_bouton ; boucle sur le nombre d'élément
If $msg = $bouton_et_valeur[$i][0] Then ; test si c'est ce menu ( handle ) qui est sélectioné
;boite de dialogue pour afficher la ligne de commande test pour vérifier ( ligne à supprimer )
; MsgBox(0, "Programme", $bouton_et_valeur[$i][1])
Run($bouton_et_valeur[$i][1]) ;éxecution de la valeur stocké dans le tableau
EndIf
Next
Until $msg = $GUI_EVENT_CLOSE or $msg = $Button1
;;Shutdown(0)
Exit
Func _bouton() ; fonction pour la création des boutons
Local $file = FileOpen(@ScriptDir & "\" & @UserName & ".txt", 0)
If $file = -1 Then Exit MsgBox(4096, "", "Il manque le fichier " & @ScriptDir & "\" & @UserName & ".txt", 50)
While 1
Local $ligne = FileReadLine($file) ;lecture séquenciel du fichier
If @error = -1 OR StringLeft($ligne, 3) = "fin" Then ExitLoop
Local $element = StringSplit($ligne, "|") ;decoupage de ligne en trois morceaux (séparés par |)
If Not IsArray($element) Then ExitLoop ;vérification du decoupage
If StringRight($element[1],1) = "t" Then
$nbr_de_tab = $nbr_de_tab +1
;Création de l'élément et stockage du handle dans le tableau
$TabSheet[$nbr_de_tab] = GUICtrlCreateTabItem($element[2])
If $nbr_de_tab < UBound($img)+1 Then
GUICtrlCreatePic($img[$nbr_de_tab-1], 30, 30)
GUICtrlSetState(-1, $GUI_DISABLE)
EndIf
Local $i = 10
Local $j = 40
Else
$nbr_de_bouton = $nbr_de_bouton + 1
;Création de l'élément et stockage du handle dans le tableau
$bouton_et_valeur[$nbr_de_bouton][0] = GUICtrlCreateButton($element[2], $i, $j, 75, 25)
$bouton_et_valeur[$nbr_de_bouton][1] = $element[3]
$i = $i + 95
If $i > 520 Then
$i = 10
$j = $j + 40
EndIf
EndIf
WEnd
FileClose($file)
Redim $TabSheet[$nbr_de_tab+1]
Redim $bouton_et_valeur[$nbr_de_bouton+1][2]
EndFunc ;==>_bouton