Ou là,
un gros gloubi boulga
1) Func ne peut pas inclure une autre déclaration func dans son corps, ce qui est le cas ici. Chaque fonction doit être déclarée les unes en desous des autres
2) ceci nous amène au pb de portée de variable : En effet des variables de contrôles comme$nom,$mail ... sont partagées par les deux fonctions, et donc si on les déclare locales à l'une, elles sont inconnues pour l'autre. Il y a donc 2 solutions :
a) moins belle mais rapide (ce que j'ai fait), mettre les variables communes à portée globale
b) laisser la déclaration locale à l'une, et les passer par paramètre à la deuxième fonction en réécrivant son prototype, comme par exemple :
. Cette méthode est préférable pour du long terme.
3) pareil dans le cas des traitement des messages (edit, tab, etc.), il faut une unique boucle while, sinon on ne s'en sort plus.
► Afficher le texte
Code : Tout sélectionner
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("AD Manager InfoInterne", 800, 700)
Opt('MustDeclareVars', 1)
Dim $prenom="",$nom="",$nom_entre="",$prenom_entre="",$mail="",$mail_suffix="@Groupe-Altitude.fr"
general()
Func update_mail()
Local $nom_courrant, $prenom_courrant
$nom_courrant = GUICtrlRead($nom)
$prenom_courrant = GUICtrlRead($prenom)
If ( ($nom_courrant <> $nom_entre) Or($prenom_courrant <> $prenom_entre) ) Then
$prenom_entre = $prenom_courrant
$nom_entre = $nom_courrant
If ( ( $nom_entre<>"" ) And ( $prenom_entre<>"" ) ) Then
GUICtrlSetData($mail,$prenom_entre&StringLeft($nom_entre,1) &$mail_suffix)
EndIf
EndIf
EndFunc
Func general()
Local $onglets, $creation, $prenom_entre, $nom_entre, $mail_suffix, $Labelnom, $Labelprenom, $labelmail, $msg, $nMsg
Local $modification
Local $suppression
$onglets = GUICtrlCreateTab(10, 10, 800, 700)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CREATION;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$creation = GUICtrlCreateTabItem("Création")
GUICtrlSetState(-1, $GUI_SHOW)
#cs
$prenom_entre=""
$nom_entre=""
$mail_suffix="@Groupe-Altitude.fr"
#ce
$prenom = GUICtrlCreateInput("", 56, 56, 225, 21)
$nom = GUICtrlCreateInput("", 56, 112, 225, 21)
$mail = GUICtrlCreateInput("", 56, 176, 225, 21)
$Labelnom = GUICtrlCreateLabel("Nom", 56, 88, 26, 17)
$Labelprenom = GUICtrlCreateLabel("Prénom", 56, 32, 39, 17)
$labelmail = GUICtrlCreateLabel("Nom d'ouverture de session utilisateur:", 56, 152, 2150, 17)
AdlibEnable("update_mail",500)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MODIFICATION;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$modification = GUICtrlCreateTabItem("Modification")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SUPPRESSION;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$suppression = GUICtrlCreateTabItem("Suppression")
GUICtrlCreateTabItem("") ; end tabitem definition
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $prenom
update_mail()
Case $nom
update_mail()
EndSwitch
WEnd
EndFunc
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.