Page 1 sur 1

[R] GUI : boutons dynamiques

Posté : ven. 23 nov. 2012 12:15
par LeBarbu
Hell-O !

Dans le cadre de mon job, j'ai dû mettre en place un référentiel logiciel (en partant de 0, magnifique organisation...) : lister les applicatifs, trouver les sources, trouver les procédures existantes et les mettre à jour ou les créer. Jusque la, rien à voir avec AutoIT mais je pose le cadre (fastidieux).

Puisque cette boite est une grande fan d'excel, j'ai été "forcé" de le réaliser avec le formalise imposé mais j'essaie de voir un poil plus loin... Un fichier excel avec des onglets "logiciels dans le master", "logiciels standard", "logiciels métier", "logiciels packagés SCCM" et "astuces", ne me semble pas, ni ultra adapté, ni ergonomique pour une utilisation quotidienne. (env. 300 apps listées)

Du coup je suis parti sur une petite interface simple, gérées par onglets entre les différentes catégories et des ListBox qui récupèrent le contenu excel pour l'afficher. Jusqu'ici tout va bien...

SAUF QUE...

J'ai à coté de mes listbox un bouton "ouvrir la procédure" et un bouton "ouvrir le dossier source" qui, comme leur nom l'indique, m'ouvrent la procédure et le dossier ou sont placées les sources logicielles (2 serveurs différents)
J'ai donc envie (et besoin) que, lorsque je sélectionne un soft dans ma liste, mes deux boutons se mettent à jour dynamiquement (Si possible. Le cas échéant, je peux passer par un bouton "valider le logiciel" après sélection dans la listbox sans pb).

Sauf que... je bloque...

J'ai déjà fait un petit tour sur Google mais je ne trouve pas de solution pleinement fonctionnelle à mon souci...

Si quelqu'un peut m'aider... C'est pas de refus !

Merci d'avance à tous.

Re: [..] GUI : boutons dynamiques

Posté : ven. 23 nov. 2012 14:18
par mikell
LeBarbu a écrit :J'ai donc envie (et besoin) que, lorsque je sélectionne un soft dans ma liste, mes deux boutons se mettent à jour dynamiquement
Je comprends pas le pb...
Le bouton peut très bien exploiter un GuiCtrlRead($list) qui retourne la valeur sélectionnée dans la liste, non ?
Peut-être aussi créer au départ une (ou plusieurs) array 2D où
$soft[x][0] = application
$soft[x][1] = procedure
$soft[x][3] = dossier

Code : Tout sélectionner

Case $bouton
   For $i = 0 to UBound($soft)-1
    If $soft[$i][0] = GuiCtrlRead($list) Then
        $procedure = $soft[$i][1]
        $dossier = $soft[$i][2]
    EndIf
    ; ... etc
   Next

Re: [..] GUI : boutons dynamiques

Posté : ven. 23 nov. 2012 14:40
par LeBarbu
Merci Mikell,

En fait, je n'aurais pas forcément besoin d'un array car les chemin du dossier et de la procédure sera selon un formalisme identique pour chaque logiciel (ex: \\srv\apps\NomApp\Installation.doc)

En passant par un bouton, je venais juste de réussir à récupérer le texte selectionné :

Code : Tout sélectionner

Case $Std_Valid
   $Std_Selected = ControlCommand($GUI, "", $Std_List, "GetCurrentSelection")
   MsgBox(64, "", $Std_Selected)
 
Mon but était de récupérer l'info "OnClick" sur ma liste. En suivant ton exemple,

Code : Tout sélectionner

While 1
   GUICtrlCreateLabel(GUICtrlRead($Std_List), 469, 344, 150, 17)
WEnd
Mais la, mon pb est que dans mon label j'ai la liste entière qui s'affiche, ligne après ligne... J'ai l'impression de louper un truc tout bête...

Re: [..] GUI : boutons dynamiques

Posté : ven. 23 nov. 2012 15:10
par GaRydelaMer
Bobnjour

je comprends pas ton pb en plus avec ta dernière ligne tu vas créer un tas de label essaie ca:

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

Local $nMsg
GUICreate("Test combo")
Local $nCb = GUICtrlCreateCombo("", 10, 10)
GUICtrlSetData(-1, "word|excel|photofiltre", "")
GUISetState()

While 1
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then ExitLoop
    Switch $nMsg
        case $nCb
            MsgBox(0, "Item sélectionné" & GUICtrlRead($nCb), StringFormat("Serveur: \\srv\apps\%s\Installation.doc", GUICtrlRead($nCb)))
    EndSwitch
WEnd
 

Re: [..] GUI : boutons dynamiques

Posté : ven. 23 nov. 2012 22:41
par mikell
C'est encore plus parlant en remplaçant dans le code de Gary GUICtrlCreateCombo par GUICtrlCreateList ^^

Re: [..] GUI : boutons dynamiques

Posté : lun. 26 nov. 2012 12:30
par LeBarbu
Salut à tous.

Effectivement GaRydelaMer, ce que je voyais "défiler" était la création de X labels superposés.

J'ai réadapté ton code à mes besoins

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

Local $nMsg
GUICreate("Test combo")
Local $nCb = GUICtrlCreateList("", 10, 10)
GUICtrlSetData(-1, "word|excel|photofiltre", "")
GUISetState()
Local $Info1 = GUICtrlCreateLabel("Nom Applicatif", 250, 150)

While 1
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then ExitLoop
    Switch $nMsg
        case $nCb
            GUICtrlDelete($Info1)
            $Info1 = GUICtrlCreateLabel(GUICtrlRead($nCb), 250, 150)
    EndSwitch
WEnd
 
et...

et...
► Afficher le texte
Donc, un grand merci ! (à tous) pour votre aide.

Et un passage en Résolu

Re: [R] GUI : boutons dynamiques

Posté : mar. 27 nov. 2012 10:52
par GaRydelaMer
Bonjour

Non c'est pas bon dans ton code tu vas encore une fois créer des label à chaque sélection dans la liste. Bien que tu le supprime avant, il est plus simple de le mettre à jour.

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

Local $nMsg
GUICreate("Test combo")
Local $nCb = GUICtrlCreateList("", 10, 10)
GUICtrlSetData(-1, "word|excel|photofiltre", "")
GUISetState()
Local $Info1 = GUICtrlCreateLabel("Nom Applicatif", 250, 150)

While 1
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then ExitLoop
    Switch $nMsg
        case $nCb
            GUICtrlSetData($Info1, "Appli: " & GUICtrlRead($nCb)) ; Puisque tu l'as déjà créer met juste ça valeur à jour !!!
    EndSwitch
WEnd