Page 1 sur 1

[R] concaténer des controls

Posté : dim. 17 avr. 2016 22:24
par ericire
bonsoir
toujours autant débutant
Je crée une GUI pour définir un chemin, et une fois ce chemin élaboré, créer une arborescence de dossiers.
Déjà pour la première étape qui est de créer le chemin, je ne sais pas faire apparaitre tous les controls dans une input finale
et pour les boutons radios je ne sais pas non plus comment les intégrer dans le dernier input
voici le code
► Afficher le texte

Re: concaténer des controls

Posté : lun. 18 avr. 2016 10:53
par mikell
Il ya un ordre à respecter :
1) tu crées les controles
2) tu leur attribues un contenu (en cochant un bouton radio ou en écrivant dans un input)
3) tu lis le contenu de ces controles dans des variables
4) tu concatènes ces variables pour construire le chemin
5) tu crées le dossier correspondant à ce chemin
Si tu zappes une étape ça ne marchera pas
Voilà un exemple

Code : Tout sélectionner

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$gui = GUICreate("Créer les dossiers de l'opération", 400, 400)
; Create a input text dossier racine.
$dossier_racine = GUICtrlCreateLabel("Dossier racine", 8, 8, 136, 17)
$dossier_racineinput = GUICtrlCreateInput("DICT", 8, 25, 380, 21)
; Create a radio control departement.
;$departement = GUICtrlCreateLabel("Département", 8, 50, 136, 17)
$departement = GUICtrlCreateGroup("Département", 5, 50, 165, 50)
GUIStartGroup()
Local $idRadio1 = GUICtrlCreateRadio("30 - Gard", 8, 70, 70, 20)
Local $idRadio2 = GUICtrlCreateRadio("34 - Hérault", 80, 70, 70, 20)
; Create a radio control type opération.
GUICtrlCreateLabel("Type opération", 8, 100, 136, 17)
GUIStartGroup()
Local $idRadio3 = GUICtrlCreateRadio("Diagnostic", 8, 120, 70, 20)
Local $idRadio4 = GUICtrlCreateRadio("Fouille", 80, 120, 70, 20)
; GUICtrlSetState($idRadio3, $GUI_CHECKED)
; Create a input text communes.
GUICtrlCreateLabel("Commune", 8, 150, 136, 17)
$dossier_communes = GUICtrlCreateInput("", 8, 170, 380, 21)
; Create a input text nom chantier.
GUICtrlCreateLabel("Nom chantier", 8, 200, 136, 17)
$nom_chantierinput = GUICtrlCreateInput("", 8, 220, 380, 21)
; Create a input text chemin du dossier à créer.
GUICtrlCreateLabel("Chemin du dossier à créer", 8, 251, 136, 17)
$chemininput = GUICtrlCreateInput("" ,8, 271, 380, 21)

$ok = GUICtrlCreateButton("dossier à créer",8,300,150,30)
$doss = GUICtrlCreateButton("créer le dossier",170,300,150,30)
GUISetState()

Global $departement, $operation, $chemin

While 1
  $nMsg = GUIGetMsg()
  Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $idRadio1, $idRadio2   
         If GUICtrlRead($nMsg) = 1 Then $departement = StringLeft(GUICtrlRead($nMsg, 1), 2)
      Case $idRadio3, $idRadio4   
         If GUICtrlRead($nMsg) = 1 Then $operation = GUICtrlRead($nMsg, 1)
      Case $ok
         $racine = GUICtrlRead($dossier_racineinput)
         $commune = GUICtrlRead($dossier_communes)
         $chantier = GUICtrlRead($nom_chantierinput)
         If $racine <> "" and $departement <> "" and $operation <> "" and $commune <> ""  Then
             $chemin = $racine & "\" & $departement & "\" & $operation & "\" & $commune & "\" & $chantier
             GuiCtrlSetData($chemininput, $chemin)
         EndIf
      Case $doss
        If $chemin <> "" Then DirCreate($chemin)
   EndSwitch
WEnd

Re: concaténer des controls

Posté : lun. 18 avr. 2016 14:51
par ericire
Hello Mikell
merci beaucoup pour ton aide.
Les actions sont interceptées dans la boucle.
J'ai compris la nuance entre GUICtrlRead($nMsg) et GUICtrlRead($nMsg, 1) sur les boutons radio et donc aussi le rôle de $nMsg = GUIGetMsg()
qui contient l'event des actions.
J'essaie à la fin de créer plusieurs sous dossiers pré-établis et je reviens clore le sujet si c'est bon.

Re: concaténer des controls

Posté : lun. 18 avr. 2016 16:14
par ericire
c'est impeccable
tout réussi
sujet clos
merci