[R]Retrouver l'affichage vierge d'une ComboBox

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
GMH
Niveau 6
Niveau 6
Messages : 227
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

[R]Retrouver l'affichage vierge d'une ComboBox

#1

Message par GMH »

Bonjour,

Je ne parviens pas trouver, parmi toutes les fonctions concernant les ComboBox, celle qui permettrait d'effacer la dernière valeur choisie pour afficher une ComboBox vierge, sans, bien sûr, supprimer l'item de la liste déroulante. Existe-t-elle ?

Je vous remercie.
Modifié en dernier par GMH le lun. 12 févr. 2018 09:10, modifié 1 fois.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..]Retrouver l'affichage vierge d'une ComboBox

#2

Message par walkson »

Bonjour,
Le plus simplement du monde :mrgreen:
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 438, 192, 124)
Global $Combo1 = GUICtrlCreateCombo("", 96, 16, 257, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, " |aa|bb|cc"," ")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

    Case $Combo1
       MsgBox(0,"",GUICtrlRead($Combo1))
       GUICtrlSetData($Combo1," ")
 EndSwitch
WEnd
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
GMH
Niveau 6
Niveau 6
Messages : 227
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [..]Retrouver l'affichage vierge d'une ComboBox  

#3

Message par GMH »

Bonsoir,

Merci pour votre réponse.

Je vois que je n'obtenais pas satisfaction parce que je n'incluais pas l'item vide dans ma liste déroulante, comme vous l'avez fait.

Curieusement, la ComboBox ne se vide pas lors de sa première utilisation . La valeur choisie reste affichée. Aux choix suivants, la ComboBox se vide bien.

Je construis ma ComboBox comme ceci :

Code : Tout sélectionner

Global $comboE = GUICtrlCreateCombo("", 580, 770, 250, 20)
GUICtrlSetData($comboE, " |"," ")
For $i=0 To Ubound($motsE)-1
    GUICtrlSetData($comboE,$motsE[$i] & "|")
Next
Voyez-vous l'origine du problème ?
GMH
Niveau 6
Niveau 6
Messages : 227
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [..]Retrouver l'affichage vierge d'une ComboBox

#4

Message par GMH »

Ca se passe mieux avec la fonction _GUICtrlComboBox_InsertString : La ComboBox se vide dès le premier clic. Mais ma liste déroulante compte plusieurs items vides plutôt qu'un.

Code : Tout sélectionner

Global $comboE = GUICtrlCreateCombo("", 580, 770, 250, 20)
GUICtrlSetData($comboE, " |"," ")
For $i=0 To Ubound($motsE)-1
_GUICtrlComboBox_InsertString($comboE,$motsE[$i])
Next
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..]Retrouver l'affichage vierge d'une ComboBox

#5

Message par walkson »

ou bien comme ceci
Local $item
For $i=0 To Ubound($motsE)-1
    $item &= $motsE[$i] & "|"
Next
GUICtrlSetData($Combo1, $item & " "," ")
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
GMH
Niveau 6
Niveau 6
Messages : 227
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [..]Retrouver l'affichage vierge d'une ComboBox

#6

Message par GMH »

Ce qui semble marcher le mieux est :

Code : Tout sélectionner

Local $item = " |"
For $i=0 To Ubound($motsE)-1
    $item &= $motsE[$i] & "|"
Next
GUICtrlSetData($comboE, $item," ")
Il me reste toutefois 4 items vides en tête de la liste déroulante au lieu d'une seule.
Si je code simplement Local $item plutôt que Local $item = " |" , je n'ai que 2 items vides, mais au premier clic sur la liste déroulante, la ComboBox ne se vide pas. Aux clics suivants, elle se vide.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..]Retrouver l'affichage vierge d'une ComboBox

#7

Message par walkson »

On dirait que les combos vous font la misère :mrgreen:
Moi, avec ce code, je n'ai pas de problème :P
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 438, 192, 124)
Global $Combo1 = GUICtrlCreateCombo("", 96, 16, 257, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
Local $motsE[7]= [4,5,6,7,8,9,10]
Local $item
For $i=0 To Ubound($motsE)-1
    $item &= $motsE[$i] & "|"
Next
GUICtrlSetData($Combo1, $item & " "," ")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

    Case $Combo1
       MsgBox(0,"",GUICtrlRead($Combo1))
       GUICtrlSetData($Combo1," ")
 EndSwitch
WEnd
RMQ: j'ai mis l'espace à la fin car $item se termine par "|"
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
GMH
Niveau 6
Niveau 6
Messages : 227
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [R]Retrouver l'affichage vierge d'une ComboBox

#8

Message par GMH »

Bonjour walkson et merci encore,

Votre code fonctionne très bien en effet. Je l'ai testé dans mon programme, le ComboBox se vide dès le premier clic sur un item. Il restait le souci des items vides (deux) dans la liste déroulante. Après tâtonnements, j'ai fait partir la boucle de construction de la liste à 2 plutôt qu'à 0. Et maintenant je n'ai plus d'items vides. Mon problème semble résolu :

Code : Tout sélectionner

Global $comboE = GUICtrlCreateCombo("", 580, 770, 250, 20, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
Local $item
For $i=2 To Ubound($motsE)-1
    $item &= $motsE[$i] & "|"
Next
GUICtrlSetData($comboE, $item & " "," ")
Grand merci pour votre temps et votre patience.
Répondre