[R] boutons dans 2 niveau de GUI

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
krys
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 25 juin 2009 13:00
Status : Hors ligne

[R] boutons dans 2 niveau de GUI

#1

Message par krys »

Bonsoir,

J'ai lu les règles du forum français et je vais donc essayer de ne pas fournir d'informations confidentielles sur mon script.

Pour des raisons de compréhension j'ai volontairement supprimé PLEIN de lignes donc ne pas essayer de lancer les lignes suivantes ... ça risque de ne pas fonctionner correctement.

Pour faire au plus clair je vais essayer d'être concis, en gros je doit proposer a mes utilisateurs une fenêtre leur permettant de retarder l'installation d'un logiciel.

Ce script affiche une fenêtre principale et en fonction de l'interaction de chaque utilisateur il peut y avoir une nouvelle fenêtre proposant des "options" d'installation.

Afin de laisser l'utilisateur "libre" de son interaction j'avais opté pour une message box avec un timeout mais mon boss a refusé parce que cette fenêtre n'affiche pas "en temps réel" le timeout de la message box.

J'ai donc créé une fonction avec une fenêtre "interactive" ou l'utilisateur voit le temps défiler via un GUICtrlSetData sur un "label"

Mon soucis est le suivant lorsque la fenêtre "d'installation" ou de "report" s'affiche a l'écran je n'arrive pas a faire le "focus" sur l'interaction des boutons.

D'avance merci pour vos lumières ;-))

......... Si besoin ne pas hésiter a me demander l'intégralité du code :-D
► Afficher le texte
Modifié en dernier par krys le sam. 11 juil. 2009 22:47, modifié 2 fois.
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] boutons dans 2 niveau de GUI

#2

Message par SagePourpre »

Comme je n'avais qu'une partie du code, je n'ai pas pu tester le script pour me figurer exactement le problème mais


GUICtrlSetState($bouton,$GUI_FOCUS) sert à mettre le focus sur un contrôle en particulier, dans ce cas-ci $bouton.



(Si le problème est littéralement un problème de focus... ça devrait le faire... Par contre, si ça te dit, rajoute le code complet pour que je puisse me faire
une idée exacte du problème
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
krys
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 25 juin 2009 13:00
Status : Hors ligne

Re: [..] boutons dans 2 niveau de GUI

#3

Message par krys »

Bonjour,

D'abord merci d'avoir pris le temps de me répondre ...

En fait il semble que je me suis mal exprimé mais avec le code ci dessous tu devrais mieux comprendre ce que j'avais définis comme "focus"

Encore merci :-)
Fichiers joints
code.zip
(3.36 Kio) Téléchargé 205 fois
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] boutons dans 2 niveau de GUI

#4

Message par tolf »

Merci d'utiliser des fichiers zip pour des codes aussi longs.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] boutons dans 2 niveau de GUI

#5

Message par SagePourpre »

Toujours pas certain de comprendre... J'ai exécuté le code, passé outre le message d'erreur de variables non-déclarées
et puis j'ai une fenêtre qui s'affiche avec beaucoup de label "not-found". Lorsque je clique sur un des deux boutons "not-found"

J'ai une deuxième fenêtre avec un timer...


Ce que je comprends de ta questions ...

Tu as quelque chose comme ça

► Afficher le texte

et tu voudrais avoir "l'emphase" sur un des deux boutons ...


ce qui visuellement donne

► Afficher le texte

Du moins, c'est ce que je comprends du problème... (Finalement ma compréhension de la question reste la même ... )
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
krys
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 25 juin 2009 13:00
Status : Hors ligne

Re: [..] boutons dans 2 niveau de GUI

#6

Message par krys »

bonjour,

OK effectivement je me suis mal exprimé et le code était bien morcelé.
Pour faire simple, lorsque un de mes user répond a certaines conditions il a une fenêtre qui s'affiche afin de lancer ou retarder l'install d'un soft, mise a jour, etc.

il a possibilité de reporter suivant un fichier INI (non fournis) d'un nombre de fois dépendant de quel MAJ je souhaite leur proposer.

la première fenêtre s'affiche puis en fonction de l'interaction du user une autre fenêtre lui demande de confirmer.

Cette seconde fenêtre a deux boutons, mais ceux ci ne produisent pas l'action souhaitée ... c'est a dire rien :-)

je joint le code en ayant pris soin que celui ci puisse afficher ce que je souhaite (les tempo ont été réduites)

Merci
Fichiers joints
code.au3
(12.62 Kio) Téléchargé 180 fois
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] boutons dans 2 niveau de GUI

#7

Message par SagePourpre »

Effectivement... avec le précédent code, c'était très difficile (vu que tous les labels étaient dans un *.ini non inclus)


En faisant un test rapide avec


opt("TrayIconDebug",1)



J'ai pu voir que lorsque la deuxième fenêtre apparaît, le script reste bloqué à la ligne 261 ou 311 selon le bouton pressé ...

Autrement dit, les boucles Do... Until que tu as construites.


Je regarderais de ce côté là ...

****


Après quelques minutes, voilà une modification qui ne résoud pas le problème mais qui augmente l'efficacité de ton script

Code : Tout sélectionner

While $temp_affichage_install_box > "0"
    Sleep ( 100 )
    $temp_affichage_install_box = 15 - Round(TimerDiff($startboxinstalltimer)/1000,0)
    GUICtrlSetData ( $messageboxinstall_delay_updt, $delai_lance_box &" "& $temp_affichage_install_box &" "& $SecondsTxt ) 
   WEnd
au lieu de ce que tu avais au départ

Code : Tout sélectionner

Do  
    Sleep ( 100 )
        If TimerDiff ($startboxretardtimer) >= "1000" Then
            $temp_affichage_retard_box = ($temp_affichage_retard_box - "1" )
            $startboxretardtimer = TimerInit()
            GUICtrlSetData ( $messageboxretard_delay_updt, $delai_retard_box &" "& $temp_affichage_retard_box &" "& $SecondsTxt ) 
        EndIf


La différence entre ma boucle et la tienne, outre le fait que je suis inconfortable avec les Do... Until, est
que je ne réinitialise pas le Timer à chaque 100 ms ... TimerDiff sert exactement à compter le temps depuis
le début d'un timerinit ... Donc, au lieu de faire 15 timerinit, j'en fais seulement un et utilise TimerDiff pour vérifier...

Je crois que c'est plus "optimisé" comme ça ... m'enfin bon, je replonge sur le pourquoi du comment ...


...
Presque 1 heure plus tard, j'ai une solution

► Afficher le texte


Le script ci-dessus est un exemple de comment procéder.


Même avec le plus petit script, j'ai eu le même problème que toi, c'est-à-dire que la seconde gui ne répondait pas correctement.

Cependant, si on enlève le timer, tout fonctionne correctement, voilà pourquoi j'ai mis le compteur (timer) en adlibenable pour pallier à ce problème.

Pour que ça fonctionne correctement, les variables utilisées par le compteur doivent être déclarées auparavant.


:mrgreen: :mrgreen:

Si jamais il y'a un soucis, n'hésite pas ! ... cela corrige entièrement le problème.


P.s. : Je crois remarquer aussi que tu utilise guicreate pour créer la seconde gui à chaque fois que celle-ci a besoin d'être crée
tu devrais utiliser guidelete plutôt que @SW_HIDE selon moi puisque cette gui est recrée à neuf chaque fois.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
krys
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 25 juin 2009 13:00
Status : Hors ligne

Re: [..] boutons dans 2 niveau de GUI

#8

Message par krys »

Encore merci de tes réponses

Après avoir essayer ce que tu a posté l'effet en reste identique sur la seconde fenêtre l'action sur le bouton n'a aucun effet :(
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] boutons dans 2 niveau de GUI

#9

Message par SagePourpre »

krys a écrit :Encore merci de tes réponses

Après avoir essayer ce que tu a posté l'effet en reste identique sur la seconde fenêtre l'action sur le bouton n'a aucun effet :(
Pourtant ...
code 2.zip
(2.66 Kio) Téléchargé 146 fois

J'ai appliqué la modification avec adlibenable et rajouté une boîte de message qui fonctionne bien...


Si tu appuies sur exécuter dans la première fenêtre, puis dans la deuxième
Une msgbox va apparaître derrière ta gui ... ce qui prouve bien que le script
réagit à Guictrlsetonevent($Yes_install_button,"Yes_install_button")

Si tu remplaces la boîte de message par $timer = 0, la nouvelle valeur va être prise en compte immédiatement après.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
krys
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 25 juin 2009 13:00
Status : Hors ligne

Re: [..] boutons dans 2 niveau de GUI

#10

Message par krys »

Merci j'ai bien vu la msgbox apparaitre

il vas falloir que je bûche encore un peu dessus alors afin d'intégrer complètement ta solution...

Merci
Répondre