Page 1 sur 1

[R] Interaction de plusieurs COMBOBOX dans un GUI

Posté : ven. 14 déc. 2007 09:53
par lutin44
Bonjour a tous ,inscrit tout récemment ,voici ce qui m'amène :
je souhaite réaliser un petit script dans le but d'automatiser
a distance l'install et la désintall d'appli par la biais d'une prise de main VNC,
mon script dois fonctionne à l'aide de menu deroulant (combobox),
et en fait je n'arrive pas a faire en sortent que le menu deroulant de la deuxieme combo
soit variable en fonction de la premiere :
voici mon script bien sur incomplet mais j'y vais par étape :


► Afficher le texte
Merci a tous d'avance pour vos reponses


Edit Tlem : Merci d'utiliser les balises de code.

Posté : dim. 16 déc. 2007 19:14
par lutin44
Bon he bien quelque visite mais pas beaucoup de reponse pour mon post,
bien sur la ligne definissant le caratere de separation est virée (erreur de copier/coller)
mais dans l'ensemble mon script doit fonctionner de la sorte,en fait le premier combobox doit definir l'affichage du second (choix entre trois liste)

Quelqu'un a-t-il une idee??

Posté : dim. 16 déc. 2007 20:51
par Tlem
lutin44 a écrit :Quelqu'un a-t-il une idee??
Oui.

En fait, vous utiliez le GUICtrlSetData avant la boucle While !!!

Votre programme, après avoir été lancé, attend dans la boucle While, un évènement ($msg = GUIGetMsg()).

Et ce n'est que lorsque l'évènement sera détecté que vous devez agir.
Il vous faut donc détecter le changement de la première ComboBox, pour pouvoir modifier par le GUICtrlSetData le contenu de l'autre ComboBox.

Posté : dim. 16 déc. 2007 21:01
par Tlem
En re-lisant votre code, je m'appercois aussi que vous n'avez dans votre GUI qu'une seule ComboBox !
Vous devez donc en créer une deuxième, comme vous l'avez préciser, et je vous conseil d'en récupérer le ControlID, qui vous permettra de modifier ce contrôle.

Pour ce faire, procéder comme ceci :

Code : Tout sélectionner

$CMB_1 = GUICtrlSetData(-1,"Aplloc/Aplcom2k/Aplmet2k")
après, il vous suffit plus loin dans le code, de mettre à jour le ComboBox par :

Code : Tout sélectionner

GUICtrlSetData($CMB_1,"7-zip|ACFdom|Cinna|Datacopy|INTOUEST|MULTIIRM|POSTES|Reperso|UOI")

Posté : mer. 19 déc. 2007 14:43
par lutin44
Salu Tlem,merci a toi pour les indications,je pense avoir saisi le principe de la boucle While avant la Guictrlsetdata ,mais pas trop celui du rafraichissement du second combo,voici ce que je fais :
► Afficher le texte



Peux-tu me dire si je fais bien ou s'il y a une erreur (ce dont je ne serais pas surpris ...)

Merci d'avance

Crdlt

Posté : mer. 19 déc. 2007 22:27
par Tlem
Regarder ici avant de poursuivre.

Posté : jeu. 20 déc. 2007 12:42
par lutin44
Salut Tlem ,desole tu vas me trouver insistant,mais le lien que tu m'a fournis m'indique que le message n'existe pas .

Posté : jeu. 20 déc. 2007 18:57
par Tlem
Oups !!!
Désolé, une erreur de copier/coller.
Le lien est corrigé.

Re: [..] Interaction de plusieurs COMBOBOX dans un GUI

Posté : mer. 06 févr. 2008 15:10
par lutin44
Salut Tlem,
Desole de n'avoir pas repondu plus tot ,mais d'autre projet ont pris le dessus .
Voila ,j'ai donc potasser un peu le necessaire a sovoir pour rediger un script,et du coup j'ai un peu changer de tactique ,j'ai opte pour un tableu avec items comme ci dessous :
► Afficher le texte
or le probleme est que pour mon fichier ini j'ai toujours des mesage d'erreur du style unable to parse line ou Missing separator character after keyword

voici un extrait du contenu de mon fichier ini
► Afficher le texte
Pourrait tu m'eclairer sur ce message d'erreur car j'ai tenté pas mal de chose : mettre de des espace entre les "=" ou les "[" , "]"

les message d'erreur persistent

Please Help

Re: [..] Interaction de plusieurs COMBOBOX dans un GUI

Posté : mer. 06 févr. 2008 21:08
par Tlem
J'ai fait un copier/coller de votre code dans Scite, et d'un premier regard, 2 choses peuvent poser problème :

- Le #include <apl.ini> n'a pas de raison d'être !!!
Les includes, sont reservés à l'ajout de fichier au3 (Autre fichiers script, qui peuvent contenir des fonctions ou bout de code, à inclure dans votre script).

- La ligne $prod = IniRead("apl.ini", $appli, $appli) qui ne respecte pas la syntaxe de la commande. Celle ci devrait être : $prod = IniRead("apl.ini", $appli, $appli, "").

- La duplication du While/Wend, qui empêche la sortie du code lors du premier clique sur la fermeture systeme.

Voilà pour les problèmes propre au code.
En dehors de ça, plusieurs autres choses seraient à revoir de plus prêt ...

Pour commencer, la suite de Send que vous envoyez pour lancer vos commandes de la boucle While au travers de la GUI Windows.
Il serait bien plus sage d'utiliser simplement Run ou RunWait, car cela ne vous ferait qu'une seule ligne, et serait bien plus fiable en terme d'exécution ...

Ensuite le gros morceau. ;)
Je trouve votre gestion de chaque élément trop lourde pour être facile à manipulé ou modifié.
Au lieu de mettre chaque élément en dur dans le code, créer plutôt un fichier INI qui contiendra vos 3 sections, et avant l'affichage de l'interface graphique, vous faites une lecture du fichier INI.
Voici à quoi devrait ressemble votre fichier INI :

Code : Tout sélectionner

[Aplloc]
Acc2k_RT=20053
Acrobat505=20100
Acrobat800=20174
AcrobatR505=20075
AcrobatR708=20154
.
.
.

[Aplcom]
Actisync37=20139
ActiveSync41=20160
.
.
.

[Aplmet]
.
.
.
 
Il est de cette façon très simple de lire une section entière, de la moduler, et de l'afficher.
De plus, votre code en sera plus lisible et accessible.

Je pense qu'il y à déjà là, matière à réflexion. :P
A très bientôt sûrement.

Re: [..] Interaction de plusieurs COMBOBOX dans un GUI

Posté : jeu. 07 févr. 2008 16:01
par ani
hello :)
je pensais avoir répondu a ce sujet, en fin compte non, excuse.
y avait des erreur au niveau du guictrlsetdata.
exemple
► Afficher le texte
Avec les tab il faut ajouter GUICtrlCreateTabitem ("") pour fermer.
Vu que tu va passer par un fichier ini tout le script changera, en plus avec les tab sa sera plus chaud :)

Comme la signalé tlem indiqué chaque section avec leur élèment (clé=valeur) du fichier ini, delà il ne restera plus qu'à lire le fichier ([section] clé=valeur)

je reprend la première interface (ton premier post sans les tabitem)
fichier ini = apl.ini qui devra se trouver en racine du script ou de l'exe
► Afficher le texte

[R] Interaction de plusieurs COMBOBOX dans un GUI

Posté : lun. 11 févr. 2008 16:41
par lutin44
Bonjour,
ATlem et a Ani,un grand merci messieurs,grace a vos conseils avisés,je suis venu a bout de ce script,dont voici la version finale ci-dessous,je suis parvenu a faire precisement ce que je souhaitait ,le resultat est en plus tres stable,et ce grace a vous deux .
Je mesure maintenant la puissance d' AutoIt ....
Je passe ce sujet en clos ,pour ma part c'est terminé ,il ne me reste plus qu'a continuer a apprendre .
Merci encore et @ +

Fred
► Afficher le texte

Re: [..] Interaction de plusieurs COMBOBOX dans un GUI

Posté : lun. 11 févr. 2008 20:15
par Tlem
Quel dommage d'avoir garder les sections et listes dans le script. ;)
Si tout cela était mis dans le fichier INI, ce serait plus commode et plus propre.

Re: [..] Interaction de plusieurs COMBOBOX dans un GUI

Posté : jeu. 13 mars 2008 17:43
par lutin44
Salut les gars ,une derniere reponse et je ferme le sujet,
ayant suivi tes conseils Tlem,j'ai modifie le scrit pour ne plus y laisse apparaitre les listes dans le scrpit ,tout est dans le fichier ini et ca marche du tonnerre :mrgreen: :mrgreen:

voici la dernierre mouture :
► Afficher le texte
Encore une fois merci pour tout vos conseils,,je ferme donc et j'en ouvre un autre aussitôt.
He! oui ,j'ai encore besoin de vos lumières

@ +

Fred