[Func] _GUICtrlGetStateTrue (Test des contrôles)

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

[Func] _GUICtrlGetStateTrue (Test des contrôles)

#1

Message par tolf »

Fonction pour tester n'importe quel type d'état recherché (ex : disable, show, focus, etc...) :

Code : Tout sélectionner

;===============================================================================
; Description:      Returns the state of a control.
; Parameter(s):     $controlID - ID of the tested control
;                   $state - The state to test
;                   $type - get_state or read
;                   $ErrMsg - 
; Requirement(s):   None
; Return Value(s):  On Success - Returns "TRUE" if the state is true, "FALSE" else
;                   On Failure - Returns -1 and the error code :
;                           1 = $controlID is not a handle
;                           2 = $state is not valid
;                           3 = $type is not valid
;
; Author(s):        tolf
; Note(s):
; Example:          _GUICtrlGetStateTrue($ID, "enable", "get_state")
;
;===============================================================================
Func _GUICtrlGetStateTrue($controlID, $state, $type = "get_state")
    If Not($state = 0 Or $state = 1 Or $state = 2 Or $state = 4 Or $state = 8 Or $state = 16 Or $state = 32 Or $state = 64 Or $state = 128 Or $state = 256 Or $state = 512 Or $state = 1024 Or $state = 2048 Or $state = 4096 Or $state = 8192) Then ; the state is not valid => see GUIConstantsEx.au3
        SetError(2)
        Return -1
    EndIf
    
    Local $val
    Switch $type
        Case "get_state"
            $val = GUICtrlGetState($controlID)
            
            If $val = -1 Then
                SetError(1)
                Return -1
            EndIf
        Case "read"
            $val = GUICtrlRead($controlID)
            
            If $val = 0 Then
                SetError(1)
                Return -1
            EndIf
        Case Else
            SetError(3)
            Return -1
    EndSwitch
    
    Return BitAnd($val, $state) = $state
EndFunc

; values of states from GUIConstantsEx.au3

;~ $GUI_AVISTOP = 0
;~ $GUI_AVISTART = 1
;~ $GUI_AVICLOSE = 2

;~ $GUI_CHECKED = 1
;~ $GUI_INDETERMINATE = 2
;~ $GUI_UNCHECKED = 4

;~ $GUI_DROPACCEPTED = 8
;~ $GUI_NODROPACCEPTED = 4096
;~ $GUI_ACCEPTFILES = $GUI_DROPACCEPTED ; to be suppressed

;~ $GUI_SHOW = 16
;~ $GUI_HIDE = 32
;~ $GUI_ENABLE  = 64
;~ $GUI_DISABLE = 128

;~ $GUI_FOCUS = 256
;~ $GUI_NOFOCUS = 8192
;~ $GUI_DEFBUTTON = 512

;~ $GUI_EXPAND  = 1024
;~ $GUI_ONTOP = 2048
Merci de signaler mes éventuelles fautes en anglais :wink: ou sur le code.
Modifié en dernier par tolf le lun. 05 mai 2008 19:11, modifié 2 fois.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [UDF] _GUICtrlGetStateTrue (Test des contrôles)

#2

Message par Tlem »

J'ai séparer cette fonction du post de la fonction _IsChecked car cette fonction est une fonction à part entière et bien plus complexe que _IsChecked.
Elle mériterais aussi un ajout de la gestion d'erreur.

Il serait bien de compléter les commentaires de la fonction, pour détailler son utilisation.
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