[R] Actualisation de ComboBox

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

[R] Actualisation de ComboBox

#1

Message par jpascal »

Bonjour,

J'utilise ce code pour auto compléter mes ComboBox.

Si je choisis la valeur dans la liste en cliquant avec la souris, l'index est bien retourné lorsque je clique sur le bouton +.
Si j'utilise l'auto completion, la valeur de l'index retournée est -1.

Comment faire en sorte d'actualiser la sélection de la ComboBox ?

Code : Tout sélectionner

#include <GuiComboBox.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

$hGUI = GUICreate("", 220, 80)
GUICtrlCreateLabel("User", 20, 20)
Global $g_idCombo_User = GUICtrlCreateCombo("", 20, 20, 150, 20)
GUICtrlSetData(-1, "Jean|Marius|Marina|Marie")
Local $idButton_AddUser = GUICtrlCreateButton("+", 175, 19, 23, 23)
GUISetState(@SW_SHOW)


While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $idButton_AddUser
			MsgBox(0, "", _GUICtrlComboBox_GetCurSel($g_idCombo_User))
	EndSwitch
WEnd


Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
	#forceref $hWnd, $iMsg
	Local $hWndFrom, $iIDFrom, $iCode, $hWndCombo_User
	If Not IsHWnd($g_idCombo_User) Then $hWndCombo_User = GUICtrlGetHandle($g_idCombo_User)
	$hWndFrom = $lParam
	$iIDFrom = BitAND($wParam, 0xFFFF) ; Low Word
	$iCode = BitShift($wParam, 16) ; Hi Word
	Switch $hWndFrom
		Case $g_idCombo_User, $hWndCombo_User
			Switch $iCode
				Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box
					_GUICtrlComboBox_AutoComplete($g_idCombo_User)
					; no return value
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND
Modifié en dernier par jpascal le lun. 11 sept. 2017 14:19, modifié 1 fois.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Actualisation de ComboBox

#2

Message par orax »

Si le contenu est récupéré, au lieu de l'index, est-ce que ça irait ?

Code : Tout sélectionner

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $idButton_AddUser
;~ 			MsgBox(0, "", _GUICtrlComboBox_GetCurSel($g_idCombo_User))
			MsgBox(0, "", GUICtrlRead($g_idCombo_User))
	EndSwitch
WEnd
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 127
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: Actualisation de ComboBox

#3

Message par Numeric »

Ou si c'est l'index que tu veux aussi...
While 1
   Switch GUIGetMsg()
      Case $GUI_EVENT_CLOSE
         ExitLoop
      Case $idButton_AddUser

         MsgBox(0, "",_GUICtrlComboBox_FindString($g_idCombo_User,GUICtrlRead($g_idCombo_User)))
   EndSwitch
WEnd
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: Actualisation de ComboBox

#4

Message par jpascal »

Bonjour,

Merci pour vos réponses.

Si je veux être tatillon, je peux dire que la solution de Numeric n'est pas fonctionnelle à 100 %.
Exemple avec ce code : GUICtrlSetData(-1, "Marielle|Jean|Marie")

Je reste étonné qu'il n'y ait pas de méthode d'actualisation de la sélection de la ComboBox et que l'on soit obligé de "bidouiller" pour obtenir le résultat escompté.

Néanmoins je vais utiliser _GUICtrlComboBox_FindString qui répond à mon besoin.

Encore merci à vous deux.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Actualisation de ComboBox  

#5

Message par orax »

_GUICtrlComboBox_FindStringExact

Code : Tout sélectionner

MsgBox(0, "", _GUICtrlComboBox_FindStringExact($g_idCombo_User, GUICtrlRead($g_idCombo_User)))
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: Actualisation de ComboBox

#6

Message par jpascal »

C'est parfait. :-)

Merci et bonne journée.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Répondre