Souhaitant utiliser la fonction _GUICtrlComboBox_Create au lieu de GUICtrlCreateCombo, je me heurte à la problématique de remplissage de la combobox car GUICtrlSetData() ne fonctionne pas.
#include <GUIConstantsEx.au3>
#include <GuiComboBox.au3>
Example()
Func Example()
$hGUI = GUICreate("My GUI") ; will create a dialog box that when displayed is centered
_GUICtrlComboBox_Create($hGUI, "", 10, 10)
GUICtrlSetData(-1, "item1|item2|item3", "item3")
GUISetState(@SW_SHOW) ; will display an empty dialog box with a combo control with focus on
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
EndFunc ;==>Example
Suis-je obligé d'utiliser une boucle et la fonction _GUICtrlComboBox_AddString pour cela ?
N'y a-t-il pas possibilité d'importer le contenu à l'aide de texte et séparateur OU d'un tableau ?
Modifié en dernier par jpascal le lun. 18 févr. 2019 17:07, modifié 1 fois.
Bonjour,
Le problème vient que _GUICtrlComboBox_Create($hGUI, "", 10, 10) retourne un handle et GUICtrlSetData(-1, "item1|item2|item3", "item3") utilise un ID
Je vous propose la solution suivante
Parce que il est plus facile de récupérer un handle à partir de l'ID
Vous remarquerez que sur mon code _GUICtrlComboBox_AddDir($g_hCombo, "", $DDL_DRIVES, False) utilise un handle et _GUICtrlComboBox_SetCurSel($combo, 2) utilise un ID. Il faut regarder ce que les fonctions utilisent !
Cordialement,
Walkson "Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Je comprends mieux désormais.
Comme quoi parfois les explications les plus simples sont les meilleures.
En revanche, cela ne répond qu'à moitié à mon interrogation.
Est-il possible de remplir une combobox avec du texte ou un tableau en utilisant son handle ? La fonction _GUICtrlComboBox_AddDir est sympa mais bien moins utile que ce que je souhaiterais faire.
En fait j'ai l'habitude d'utiliser la fonction GUICtrlCreateCombo mais je me demandais si utiliser _GUICtrlComboBox_Create et les fonctions de GuiComboBox.au3 n'était pas une meilleure habitude de codage.
jpascal a écrit : ↑ven. 16 févr. 2018 11:18je me demandais si utiliser _GUICtrlComboBox_Create et les fonctions de GuiComboBox.au3 n'était pas une meilleure habitude de codage.
Pas forcément. En général il vaut mieux utiliser les fonctions intégrées, mais l'UDF est utile pour effectuer certaines actions que le mode "simple" ne permet pas
Utiliser l'UDF si les fonctions intégrées suffisent, c'est du pourquoi faire simple quand on peut faire compliqué
" L'échec est le fondement de la réussite. " (Lao-Tseu ) " Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Pour moi, les meilleurs codes sont les codes courts, qui utilisent peu de CPU et de mémoire, et surtout, qui font ce que l'on demande
Personnellement, j'utilise rarement les fonctions GuiComboBox.au3
Voilà un exemple simple pour rentrer un tableau (array) dans un combo
Func Example() Global$hGUI=GUICreate("My GUI"); will create a dialog box that when displayed is centered Global$combo=GUICtrlCreateCombo("",10,50) GUISetState(@SW_SHOW); will display an empty dialog box with a combo control with focus on Global$aArray[6][2]=[[1,"A"],[2,"B"],[3,"C"],[4,"A1"],[5,"B1"],[6,"C1"]] ;Global $aArray[5] = [1,2,3,4,5] _ArrayDisplay($aArray)
walkson a écrit : ↑ven. 16 févr. 2018 14:08Pour moi, les meilleurs codes sont les codes courts
Tu peux donc supprimer le test sur UBound dans ta fonction puisque _ArrayToString le fait déjà en interne
Pour rajouter une valeur dans la liste de la combo en utilisant l'ID : ControlCommand($hGUI, "", $combo, "AddString", $string)
NB: Utiliser les UDF peut exposer davantage à des "script breaking changes" qui ne sont pas toujours mentionnés dans les "release notes". Les paramètres par défaut de _ArrayToString en sont un bon exemple
" L'échec est le fondement de la réussite. " (Lao-Tseu ) " Plus ça rate, plus on a de chances que ça marche " (les Shadoks )