Page 1 sur 1
[..] Groupe de control?
Posté : lun. 29 juin 2009 15:09
par ethneldryt
Bonjour, une fonction existe pour faire un groupe de control?
par exemple j'ai 3 bouton, un label,un edit,...
ensuite en fesant un controlhide pour cacher ce groupe. merci
Re: [..] Groupe de control?
Posté : lun. 29 juin 2009 18:12
par guitarist
Je ne trouve pas sa extremement clair ce que tu VEUX C'est qu'ils affiche tes trois contrôles ou non pour sa avec If ou Case sa suffit avec sa tu met GuiCtrl... et voilà
Si j'ai bien compris sa devrai être sa.
Re: [..] Groupe de control?
Posté : lun. 29 juin 2009 21:28
par Tlem
Je ne me souviens pas avoir vu ce genre de fonction dans AutoIt.
Le mieux sera sans doute de mettre ce groupe de contrôle dans une fonction, qui gérera l'affichage ou non.
Re: [..] Groupe de control?
Posté : mar. 30 juin 2009 10:12
par L4crymal
Et voila pour toi un belle exemple fait en 30 minutes:
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
GUICreate("test", 500, 500)
GUISetState()
$ca = GUICtrlCreateButton("Cacher", 100, 100)
$mo = GUICtrlCreateButton("Montrer", 300, 100)
$check = GUICtrlCreateCheckbox("Check !", 300, 300)
$lab = GUICtrlCreateLabel("LABEL !!!!", 400, 400)
$radio = GUICtrlCreateRadio("RADIO ?!?", 100, 400)
$input = GUICtrlCreateInput("Hein ? P**e ??? ^^", 200, 200)
$Group1 = GUICtrlGroup($check & "/" & $lab & "/" & $radio & "/" & $input) ; La fonction GUICtrlGroup() ne prend que 1 paramètre : les différents CTRL à regrouper, séparés du symbole "/" pour les différentier
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ca
GUICtrlGroupSetState($Group1, $GUI_HIDE) ; Fonction qui va cacher le groupe 1
Case $mo
GUICtrlGroupSetState($Group1, $GUI_SHOW) ; Fonction qui va montrer le groupe 1
EndSwitch
WEnd
Func GUICtrlGroup($sCtrl) ; Fonction 1 qui consiste à regrouper les CTRL
$sSplit = StringSplit($sCtrl, "/") ; La fonction découpe le paramètre par rapport au symbole "/"
$sReturn = $sSplit[0] & "." & $sCtrl ; Puis attribue le nombre de CTRL dans le GROUPE
Return $sReturn ; Et retourne le résultat ( soit le GROUPE )
EndFunc ;==>GUICtrlGroup
Func GUICtrlGroupSetState($sGUICtrlGroup, $sState) ; Fonction 2 qui consiste à changer l'état d'un GROUPE
$sSplit2 = StringSplit($sGUICtrlGroup, ".") ; Elle récupère le nombre de CTRL
$DiffCtrl = StringSplit($sSplit2[2], "/") ; Divise le GROUPE affin de récupéré tous les CTRL
For $i = 1 To $sSplit2[1] ; Une boucle va se répéter le nombre de fois = au nombre de CTRL affin de tous les modifier 1 par 1 ( très rapidement et instantané à nos yeux )
GUICtrlSetState($DiffCtrl[$i], $sState) ; Et HOP !
Next
EndFunc ;==>GUICtrlGroupSetState
Posté : mar. 30 juin 2009 19:58
par jl56
Bonjour L4crymal
Effectivement c'est très fonctionnel
je ne comprend pas tous ( manque peut être un peu de commentaires )
je le garde en exemple
Merci et Bravo
A+ JL56
Re: [..] Groupe de control?
Posté : mar. 30 juin 2009 22:42
par L4crymal
Ya pas de quoi ça me fait plaisir vu que c'est un très bel exemple qui va me servir aussi ( entre autre pour faire plusieurs systèmes d'onglets )
Bref le principe est Simple ( j'ai mis les commentaires ) :
Quand tu fait:
Cela va donner un identifiant au contrôle dans $MaVariable ( par exemple 5 )
C'est grâce à cet identifiant que les autre fonction agisse, par exemple quand tu fait GuiSetState($MaVariable, $GUI_HIDE)
Autoit va comprendre qu'il faut cacher le contrôle $Mavariable ( donc l'identifiant 5 )
Voila pour conclure cette partie les fonctions qui agissent sur les Contrôles utilisent des nombres pour repérer les différents Contrôles.
La deuxième partie s'intéresse à ma fonction, comment elle fonctionne?
Et bien c'est aussi simple ^^ :
Elle prend les identifiant de tous les contrôles à regrouper en paramètre, les sépare par de "/" puis quand vient le temps de les modifier tous en un coup, une autre fonction prend en paramètre le groupe et ferme 1 à 1 les contrôles en passant d'identifiant en identifiant grâce au séparateur "/"
VOILAAAAAAAAAAAAAAAA
Re: [..] Groupe de control?
Posté : mer. 01 juil. 2009 15:55
par Tlem
Il y a bien une solution existante.
Il s'agit d'utiliser
GUICtrlCreateGroup d'une manière bien spécifique.
Voici un exemple trouvé sur le forum Anglais :
Code : Tout sélectionner
#include <GUIConstants.au3>
GUICreate('test',430,160)
Global $g1s=GUICtrlCreateGroup('Test group - check/uncheck',10,10,200,100)
Global $c11=GUICtrlCreateCheckbox('11111',20,30)
Global $c12=GUICtrlCreateCheckbox('22222',20,50)
Global $c13=GUICtrlCreateCheckbox('33333',20,70)
Global $r1=GUICtrlCreateRadio('test',100,50,60)
Global $g1e=GUICtrlCreateGroup("", -99, -99, 1, 1) ;added
Global $b1Off=GUICtrlCreateButton('off',40,120,60)
Global $b1On=GUICtrlCreateButton('on',120,120,60)
Global $g2s=GUICtrlCreateGroup('Test group - enable/disable',220,10,200,100)
Global $c21=GUICtrlCreateCheckbox('11111',230,30)
Global $c22=GUICtrlCreateCheckbox('22222',230,50)
Global $c23=GUICtrlCreateCheckbox('33333',230,70)
Global $b2=GUICtrlCreateButton('test',310,50,60)
Global $g2e=GUICtrlCreateGroup("", -99, -99, 1, 1) ;added
Global $b2Off=GUICtrlCreateButton('off',250,120,60)
Global $b2On=GUICtrlCreateButton('on',330,120,60)
GUISetState()
While 1
Sleep(20)
Switch GUIGetMsg()
Case $b1Off
_GUICtrlGroup_SetState($GUI_UNCHECKED,$g1s,$g1e)
Case $b1On
_GUICtrlGroup_SetState($GUI_CHECKED,$g1s,$g1e)
Case $b2Off
_GUICtrlGroup_SetState($GUI_DISABLE,$g2s,$g2e)
Case $b2On
_GUICtrlGroup_SetState($GUI_ENABLE,$g2s,$g2e)
Case -3
Exit
EndSwitch
WEnd
Func _GUICtrlGroup_SetState($iState, $iFrom, $iTo)
For $i = $iFrom To $iTo
GUICtrlSetState($i, $iState)
Next
EndFunc