Page 1 sur 1
[R] ComboBox qui ne s'actualise pas
Posté : lun. 13 oct. 2014 13:34
par Hugues
Bonjour,
J'utilise un fichier *.ini pour alimenter mes ComboBox en cascade.
Pour alimenter ma 1ère ComboBox, j'utilise le nom des sections trouvées.
Et pour alimenter ma deuxième ComboBox, j'utilise les Clefs et les valeurs en fonction de la précedentes...
Mais mon problème et que pour la première lecture c'est OK, mais quand je fais un autre choix dans ma première ComboBox, ma deuxième ComboBox ne s'actualise pas et garde toujours les anciennes valeurs, alors que si j'utilise ConsoleWrite, se sont les bonnes valeurs...
J'ai beau faire un GUICtrlSetData($c_Station, ""), ça ne fait rien.
Merci par avance
Ci joint mon code:
► Afficher le texte
Code : Tout sélectionner
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$IniFilePath = @ScriptDir & "\ini\cells.ini"
Global $c_Ligne
Global $c_Station
Opt("GUIOnEventMode", 1)
$hGUI = GUICreate("", 184, 96, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Quitter", $hGUI)
GUISetState(@SW_SHOW)
_LoadSection()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _Quitter()
Exit
EndFunc
Func _LoadSection()
$c_Ligne = GUICtrlCreateCombo("", 0, 0, 145, 25, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
$ArrayOfReadSectionNames = IniReadSectionNames($IniFilePath)
For $i = 1 To $ArrayOfReadSectionNames[0]
GUICtrlSetData($c_Ligne, $ArrayOfReadSectionNames[$i])
Next
GUICtrlSetOnEvent($c_Ligne, "_LoadStation")
EndFunc
Func _LoadStation()
$VarProduction = GUICtrlRead($c_Ligne)
$ReadSection = IniReadSection($IniFilePath, $VarProduction)
$c_Station = GUICtrlCreateCombo("", 0, 60, 145, 25, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
GUICtrlSetData($c_Station, "")
For $j = 1 To $ReadSection[0][0]
GUICtrlSetData($c_Station, $ReadSection[$j][0] & "_" & $ReadSection[$j][1], $ReadSection[0][0])
Next
EndFunc
Re: [..] ComboBox qui ne s'actualise pas
Posté : lun. 13 oct. 2014 14:44
par TommyDDR
Code : Tout sélectionner
Func _LoadStation()
[...]
$c_Station = GUICtrlCreateCombo("", 0, 60, 145, 25, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
Vous recréez la combo à chaque passage dans _LoadStation, il ne faut surtout pas faire ça, si vous voulez vraiment faire ça, supprimez l'ancienne avant (car c'est elle qui sera affiché devant la nouvelle)
La meilleure solution est de créer la combo avant, et de la vider puis mettre les nouvelle valeurs dans la fonction _LoadStation.
Re: [..] ComboBox qui ne s'actualise pas
Posté : lun. 13 oct. 2014 15:01
par jguinch
Perso, je créerais le combo dans _LoadSection, avec le style $GUI_HIDE (donc création du combo dés le début, mais caché)
Ensuite, dans _LoadStation, il suffit de rendre visible le combo, de le vider, puis ajouter les nouvelles valeurs...
Re: [..] ComboBox qui ne s'actualise pas
Posté : lun. 13 oct. 2014 17:06
par TommyDDR
Moi je ferai une fonction CreerIHM() qui s'occupe comme son nom l'indique de créer toute l'IHM, puis dans les différents _LoadXXX vous remplissez / affichez / cachez ce que vous voulez
Re: [..] ComboBox qui ne s'actualise pas
Posté : mar. 14 oct. 2014 07:56
par Hugues
Merci ^^
J'ai pas pensé une seule seconde que le fait de l'intégrer dans la boucle, la ComboBox aller se recréer et se superposer...