[..] Groupe de control?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ethneldryt
Status : Hors ligne

[..] Groupe de control?

#1

Message 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
guitarist
Niveau 6
Niveau 6
Messages : 235
Enregistré le : mar. 02 déc. 2008 16:59
Status : Hors ligne

Re: [..] Groupe de control?

#2

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Groupe de control?

#3

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Groupe de control?

#4

Message 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
Modifié en dernier par L4crymal le mar. 30 juin 2009 22:42, modifié 1 fois.
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

#5

Message 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
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Groupe de control?

#6

Message 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:

Code : Tout sélectionner

$MaVariable=GUICtrlCreatemachintrucmuche()
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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Groupe de control?

#7

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre