Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>
; Chemin du fichier INI à ouvrir
Local $sDesktop = @ScriptDir & "\Export\export_agora.ini"
; Vérifier si le fichier INI existe
If Not FileExists($sDesktop) Then
MsgBox($MB_ICONERROR, "Erreur", "Le fichier INI n'a pas été trouvé.")
Exit
EndIf
; Liste des clés à afficher
Local $aKeys[9] = ["Fiche automate", "GMR", "GDP", "Ouvrage(IDR)", "Niveau de tension", "N°Sem", "Date MEC (fin OG)", "Pilote Chantier", "Manager de Projet"]
; Récupérer toutes les sections du fichier INI
Local $aSections = IniReadSectionNames($sDesktop)
If @error Then
MsgBox($MB_ICONERROR, "Erreur", "Impossible de lire les sections du fichier INI.")
Exit
EndIf
; Créer la GUI principale
Local $hGUI = GUICreate("New Exp Agora", 800, 600, 0, 0)
Local $hScroll = GUICtrlCreateScrollBar($hGUI, 780, 0, 20, 600) ; Créer l'ascenseur
Local $iYPos = 10 ; Position verticale de départ
Local $iMaxHeight = 0 ; Hauteur maximale
; Créer des labels pour chaque section et chaque clé
For $i = 1 To UBound($aSections) - 1
Local $sSection = $aSections[$i]
; Lire la valeur de la clé "Fiche automate"
Local $sAutomate = IniRead($sDesktop, $sSection, "Fiche automate", " -")
; Vérifier si la valeur "Fiche automate" est différente de " -"
If StringStripWS($sAutomate, 3) <> "-" Then
; Créer le label pour la section
Local $hLabelSection = GUICtrlCreateLabel($sSection, 10, $iYPos, 700)
$iYPos += 20 ; Espace après le label de section
For $j = 0 To UBound($aKeys) - 1
Local $sKey = $aKeys[$j]
Local $sValue = IniRead($sDesktop, $sSection, $sKey, "Non défini")
Local $sLabel = $sKey & ": " & $sValue
; Créer le label pour la clé
GUICtrlCreateLabel($sLabel, 10, $iYPos, 700)
$iYPos += 20 ; Espace après le label de clé
Next
$iYPos += 10 ; Espace entre les sections
EndIf
Next
$iMaxHeight = $iYPos ; Enregistrer la hauteur maximale des labels
; Ajuster la plage de défilement
GUICtrlSetData($hScroll, 0, $iMaxHeight - 600) ; Définir la plage de défilement
; Afficher la GUI
GUISetState(@SW_SHOW, $hGUI)
; Boucle d'attente pour gérer l'ascenseur
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $GUI_EVENT_VSCROLL
; Obtenir la position actuelle de l'ascenseur
Local $iScrollPos = GUICtrlRead($hScroll)
; Déplacer tous les labels en fonction de la position de l'ascenseur
For $k = 1 To $iMaxHeight / 20
Local $labelID = $k + 1 ; ID du label à mettre à jour
GUICtrlSetPos($labelID, 10, 10 + ($k * 20) - $iScrollPos) ; Met à jour les positions
Next
EndSwitch
WEnd
; Fermer la GUI
GUIDelete($hGUI)
bon, peut être aussi que je suis un boulet, ça s'étudie !!!
Bonne soirée, et merci à tous