[R] Interaction de plusieurs COMBOBOX dans un GUI

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
lutin44
Niveau 2
Niveau 2
Messages : 19
Enregistré le : jeu. 13 déc. 2007 14:38
Localisation : Nantes
Status : Hors ligne

[R] Interaction de plusieurs COMBOBOX dans un GUI

#1

Message 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.
Modifié en dernier par lutin44 le jeu. 13 mars 2008 17:44, modifié 1 fois.
lutin44
Niveau 2
Niveau 2
Messages : 19
Enregistré le : jeu. 13 déc. 2007 14:38
Localisation : Nantes
Status : Hors ligne

#2

Message 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??
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#3

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#4

Message 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")
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lutin44
Niveau 2
Niveau 2
Messages : 19
Enregistré le : jeu. 13 déc. 2007 14:38
Localisation : Nantes
Status : Hors ligne

#5

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#6

Message par Tlem »

Regarder ici avant de poursuivre.
Modifié en dernier par Tlem le jeu. 20 déc. 2007 18:56, modifié 1 fois.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lutin44
Niveau 2
Niveau 2
Messages : 19
Enregistré le : jeu. 13 déc. 2007 14:38
Localisation : Nantes
Status : Hors ligne

#7

Message 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 .
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#8

Message par Tlem »

Oups !!!
Désolé, une erreur de copier/coller.
Le lien est corrigé.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lutin44
Niveau 2
Niveau 2
Messages : 19
Enregistré le : jeu. 13 déc. 2007 14:38
Localisation : Nantes
Status : Hors ligne

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

#9

Message 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
Modifié en dernier par ani le mer. 10 juin 2009 10:30, modifié 4 fois.
Raison : Pas la peine de mettre tout le fichier INI. J'ai supprimé quelques lignes ...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#10

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

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

#11

Message 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
lutin44
Niveau 2
Niveau 2
Messages : 19
Enregistré le : jeu. 13 déc. 2007 14:38
Localisation : Nantes
Status : Hors ligne

[R] Interaction de plusieurs COMBOBOX dans un GUI

#12

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#13

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lutin44
Niveau 2
Niveau 2
Messages : 19
Enregistré le : jeu. 13 déc. 2007 14:38
Localisation : Nantes
Status : Hors ligne

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

#14

Message 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
Répondre