[R] Problème d'activation de combo text

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
EricF
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mar. 08 mars 2011 23:06
Status : Hors ligne

[R] Problème d'activation de combo text

#1

Message par EricF »

Bonjour,
J'ai fait une petite appli qui comporte un Combo text. Si l'appli est lancée avec un certain paramètre, le combo text est mis en lecture seule, et peut être réactivé par un bouton. Ca marche bien..... sauf que les retours à la ligne ne se font pas si je modifie le contenu après réactivation.
Voici les portions du code concernées :

Code : Tout sélectionner

    If StringInStr($CmdLineRaw, "/readonly") Then
        $style_Combo = BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL,$ES_READONLY) ;Styles du Combo text en Lecture seule
    Else
        $style_Combo = BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL) ;Styles du Combo text en mode normal
    EndIf

$Edit1 = GUICtrlCreateEdit($contenu_fichier, 15, 30, 420, $hauteur_edit, $style_Combo)

;Actions

While 1
$msg = GuiGetMsg()

    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $btn_close
            btn_close()
        Case $btn_erase
            btn_erase()
        Case $btn_save
            btn_save()
        Case $btn_CreateLnk
            btn_CreateShortcut()
        Case $btn_ModifActiv
            btn_ModifActiv()
    EndSwitch
Wend



Func btn_ModifActiv()
    GUICtrlSetState($btn_save, $GUI_ENABLE)
    GUICtrlSetStyle($Edit1, $GUI_ENABLE)
    GUICtrlSetState($btn_ModifActiv, $GUI_DISABLE)
    GUICtrlSetData($btn_ModifActiv, "Mode Modif. activé")
    MsgBox(64, "Activation de la modification", "Modification activée", 1)
EndFunc
 
Je vais devancer certaines remarques : j'ai déjà essayé de désactiver le combo avec GUICtrlSetStyle($Edit1, $GUI_DISABLE) au lieu de le mettre en lecture seule, mais le texte n'est pas sélectionnable, et en plus, le souci persiste.
Modifié en dernier par EricF le mer. 07 nov. 2012 14:41, modifié 1 fois.
DDleroutier
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 02 déc. 2010 10:08
Status : Hors ligne

Re: [..] Problème d'activation de combo text

#2

Message par DDleroutier »

bonjour,

Une solution pour eviter les Styles à rallonge, peut être ca fonctionnerai

Code : Tout sélectionner

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>



#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 438, 192, 124)
Global $btn_erase = GUICtrlCreateButton("erase", 504, 24, 73, 41)
Global $btn_save = GUICtrlCreateButton("save", 504, 80, 73, 41)
Global $btn_ModifActiv = GUICtrlCreateButton("mdif actif", 504, 136, 73, 41)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###




$Edit1 = GUICtrlCreateEdit("ok", 15, 30, 420, 100)

If StringInStr($CmdLineRaw, "/readonly") Then
        GUICtrlSetState($Edit1, $GUI_DISABLE) ;Styles du Combo text en Lecture seule
    Else
        GUICtrlSetState($Edit1, $GUI_ENABLE) ;Styles du Combo text en mode normal
    EndIf


While 1
$msg = GuiGetMsg()

    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $btn_erase
;~             btn_erase()
        Case $btn_save
;~             btn_save()

        Case $btn_ModifActiv
            btn_ModifActiv()
    EndSwitch
WEnd




Func btn_ModifActiv()
    GUICtrlSetState($Edit1, $GUI_ENABLE)

EndFunc

 
EricF
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mar. 08 mars 2011 23:06
Status : Hors ligne

Re: [..] Problème d'activation de combo text

#3

Message par EricF »

Effectivement, ça fonctionne. J'avais pourtant testé avant de poster, sans succès. J'ai dû merder dans mes modifs.....
LE souci avec un $GUI_DISABLE, c'est que le texte ne peut être sélectionné, que le texte est gris (donc peu lisible) et ne peut pas être changé par un GUICtrlSetColor(). Enfin, la scrollbar est inactive, donc problématique avec un texte un peu long.
EricF
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mar. 08 mars 2011 23:06
Status : Hors ligne

Re: [..] Problème d'activation de combo text

#4

Message par EricF »

J'ai trouvé la source du problème. Quand on lance un GUICtrlSetStyle, il faut spécifier TOUS les styles.

Le code suivant :

Code : Tout sélectionner

Func btn_ModifActiv()
    GUICtrlSetState($btn_save, $GUI_ENABLE)
    GUICtrlSetStyle($Edit1, $GUI_ENABLE)
    GUICtrlSetState($btn_ModifActiv, $GUI_DISABLE) ;<<<<< pas bien
    GUICtrlSetData($btn_ModifActiv, "Mode Modif. activé")
    MsgBox(64, "Activation de la modification", "Modification activée", 1)
EndFunc
 
est donc remplacé par

Code : Tout sélectionner

Func btn_ModifActiv()
    GUICtrlSetState($btn_save, $GUI_ENABLE)
    GUICtrlSetStyle($Edit1, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL)) ;<<<<< bien :)
    GUICtrlSetState($btn_ModifActiv, $GUI_DISABLE)
    GUICtrlSetData($btn_ModifActiv, "Mode Modif. activé")
    MsgBox(64, "Activation de la modification", "Modification activée", 1)
EndFunc
Ca résoud les problèmes d'activation/désactivation des contrôles, et aussi les problèmes de retour à la ligne impossibles dans le combo Edit avec l'ancien code :)
Répondre