Code : Tout sélectionner
#include<array.au3>
#include<file.au3>
#include<GuiConstants.au3>
#include <StaticConstants.au3>
Opt("GuiOnEventMode",1)
Global $txt_array, $nblignes
$txt = "1.txt"
ouvrirfichiertexte($txt)
$gui = GUICreate("gui","500","500",-1,-1)
; Maintenant que nos infos sont toutes séparées par éléments et regroupées
; dans $txt_array, on peut créer nos labels.
; Un élément important à ne pas oublier... Comme les labels sont créés de façon dynamique, il
; nous faut un système de positionnement dynamique également.
;
$group = 1 ; $group aurait du être nommée $rangee pour plus de clarté
$colonne = 1 ; bon... je me rends compte que $colonne gère les rangée et $group gère les colonne
; il faut mettre ces 2 variables avant la boucle....
For $i = 1 To $nblignes ; notre tableau dynamique dépend de $nblignes... c'est la variable utilisée pour
;créér notre tableau ... Elle représente donc le maximum d'éléments dans notre tableau (dans ce cas particulier
; $nblignes = 3
$hdd = $txt_array[$i][0][0][0] ; première dimension du tableau
$nserie = $txt_array[$i][1][0][0] ; 2ieme dimension
$synchro = $txt_array[$i][0][1][0] ; 3eme dimension
$tech = $txt_array[$i][0][0][1] ; 4e dimension
$gx = $group * 220 - 200
$gy = $colonne * 220 - 200
#cs
$gx et $gy pour group X et group Y ... très important. Ces variables servent au positionnement de chaque groupes.
$group * 220 - 200
$group * 220 signifie qu'il y' aura 220 px de décalement de position pour chaque groupes créé si on incrémente
$group de 1 chaque fois qu'un groupe est créé
Comme les groupes on une largeur et hauteur de 200 pixels, chaque groupes sera créés avec 20 px d'espacement
le - 200 rajoutée à la fin est pour ajuster la position de départ
puisque
$group * 220 - 200
1 * 220 - 200
220 - 200
Sans le - 200, le premier groupe serait créé à 220 pixels à partir de la gauche...
#ce
GUICtrlCreateGroup($hdd,$gx,$gy,200,200)
$group+=1 ; en incrémentant $group, le prochain groupe créé aura comme position $group * 220 - 200
; ****
;Le groupe créé, on peut créer les labels de façon dynamique
$cy = 1 ; Numéro de label pour le positionnement vertical
GUICtrlCreateLabel("N de Série :",$gx+10,$gy+$cy*30,100,20,$SS_NOTIFY)
GUICtrlSetOnEvent(-1,"labelclick") ; J'assigne la même fonction à chaque label pour qu'ils réagissent si cliqués
GUICtrlCreateLabel($nserie,$gx+110,$gy+$cy*30,100,20,$SS_NOTIFY)
GUICtrlSetOnEvent(-1,"labelclick")
$cy+=1
GUICtrlCreateLabel("Dernière Synchro : ",$gx+10,$gy+$cy*30,100,20,$SS_NOTIFY)
GUICtrlSetOnEvent(-1,"labelclick")
GUICtrlCreateLabel($synchro,$gx+110,$gy+$cy*30,100,20,$SS_NOTIFY)
GUICtrlSetOnEvent(-1,"labelclick")
$cy+=1
GUICtrlCreateLabel("Tech : ",$gx+10,$gy+$cy*30,100,20,$SS_NOTIFY)
GUICtrlSetOnEvent(-1,"labelclick")
GUICtrlCreateLabel($tech,$gx+110,$gy+$cy*30,100,20,$SS_NOTIFY)
GUICtrlSetOnEvent(-1,"labelclick")
$cy+=1
GUICtrlCreateLabel("Statut : ",$gx+10,$gy+$cy*30,100,20,$SS_NOTIFY)
GUICtrlSetOnEvent(-1,"labelclick")
GUICtrlCreateLabel("N/A",$gx+110,$gy+$cy*30,100,20,$SS_NOTIFY) ; comme il n'y avait pas d'infos sur ce paramètre...
GUICtrlSetOnEvent(-1,"labelclick")
; Ici on gère le positionnement du prochain groupe
If Int($i/2) = $colonne Then ; Si $i/2 par deux est un nombre entier = à $colonne, on incrémente $colonne de 1 pour
; changer de rangée (ne pas oublier que $colonne gère les rangée et $group gère les colonnes) et on remet
; $group à 1 pour que l'élément soit créé dans la première colonne ... un retour de ligne en quelque sorte
$colonne+=1
$group = 1
EndIf
Next
GUISetState() ; sans cette ligne, la gui ne s'affiche pas
GUISetOnEvent($GUI_EVENT_CLOSE,"quit") ; on assigne la fonction "quit" à la gui lorsque on la ferme
While 1 ; boucle d'attente... sans cette boucle, le script se terminerait immédiatement
Sleep(100)
WEnd
Func ouvrirfichiertexte($fichier)
$nblignes = _FileCountLines($fichier)
$max = $nblignes + 1 ; pour créer le tableau qui doit contenir $nblignes d'éléments + 1 (pour l'index)
Dim $txt_array[$max][$max][$max][$max]
cw("Nombre de lignes dans le fichier = " & $nblignes)
$f = FileOpen($fichier,0)
For $i = 1 To $nblignes ; on lit le fichier lignes par lignes
$r = FileReadLine($f,$i)
cw($r)
$r = StringSplit($r,"|",1) ; on sépare les éléments de la première lignes
cw("1. " & $r[1]) ;Ligne des HDD
cw("2. " & $r[2]) ; lignes des N de série
cw("3. " & $r[3]) ; date
cw("4. " & $r[4]) ; tech
$txt_array[$i][0][0][0] = $r[1] ; on met les informations dans le tableau créé puisque à chaque
$txt_array[$i][1][0][0] = $r[2] ; progression de la boucle, $r[$i] est remplacé... le tableau lui
$txt_array[$i][0][1][0] = $r[3] ; conserve nos valeurs....
$txt_array[$i][0][0][1] = $r[4]
Next
FileClose($f) ; très important de fermer le fichier lorsqu'il ne sert plus.
; comme toutes nos données sont maintenant dans le tableau, on peut le fermer
; pour libérer la mémoire
; **** Les lignes entres les étoiles peuvent être effacées
; c'est seulement pour montrer le tableau de façon visuelle
For $i = 1 To $nblignes ; le nombre de lignes du fichier texte
cw($txt_array[$i][0][0][0] & " | " & $txt_array[$i][1][0][0] & " | " & $txt_array[$i][0][1][0] & " | " & $txt_array[$i][0][0][1])
Next
; *** Comme tu peux constater dans la console, le tout ressemble à notre fichier de départ en tout point, mais il
;est maintenant divisé en section distincte
EndFunc
Func quit()
Exit
EndFunc
Func cw($data)
ConsoleWrite($data & @CRLF)
EndFunc
Func labelclick()
MsgBox(0,"",GUICtrlRead(@GUI_CtrlId))
EndFunc