[R] Réaliser un bouton "interactif"

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Xtend
Niveau 4
Niveau 4
Messages : 54
Enregistré le : sam. 19 févr. 2011 11:58
Status : Hors ligne

[R] Réaliser un bouton "interactif"

#1

Message par Xtend »

Bonjour,

Je souhaiterais réaliser une GUI avec quelques boutons, jusqu'à la, pas de problème ;)
Cependant, je voudrais que ces boutons soit des images (.jpg, .png ou autres) et que lorsque qu'on passe la souris dessus, l'image change.

En résumé, ça consisterais à afficher une image lorsque la souris n'est pas dessus et à afficher une autre image lorsqu'elle est dessus (on pourrais aussi faire une troisième image lorsqu'on clique dessus).

J'ai vu une UDF capable de faire cela : http://autoitscript.fr/forum/viewtopic.php?f=21&t=3672
Cependant, comme l'auteur le dit lui-même, de nombreux bugs font que le script bug (et en effet, chez moi, ça plante beaucoup ... mais bon, c'est exactement ce que je recherche).

Connaissez-vous le moyen de réaliser ceci ou les étapes à suivre ?


Merci d'avance ;)
Modifié en dernier par Xtend le lun. 14 mars 2011 18:49, modifié 1 fois.
Xtend
Niveau 4
Niveau 4
Messages : 54
Enregistré le : sam. 19 févr. 2011 11:58
Status : Hors ligne

Re: [..] Réaliser un bouton "interactif"

#2

Message par Xtend »

Après moult recherches, j'ai finalement trouvé ce topic : http://autoitscript.fr/forum/viewtopic.php?f=21&t=4174

C'est l'UDF qu'il me fallait, j'ai réarranger la ligne 24 en remplaçant AdlibEnable par AdlibRegister mais il m'affiche cette erreur :

► Afficher le texte
Voici le code de l'UDF que j'ai utilisé :
► Afficher le texte
Et mon script (enfin c'est celui du topic ou je l'ai pris ^^) :
► Afficher le texte
Pouvez-vous m'aider à résoudre mon problème ?
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Réaliser un bouton "interactif"

#3

Message par pierrotm777 »

J'ai l'impression que l'erreur indique un appel à la fonction _On_Over avec 0 objet puis avec un objet .
Il semblerait donc qu'il n'aime pas le Adlibregister car l'objet n'y est pas indiqué .
Xtend
Niveau 4
Niveau 4
Messages : 54
Enregistré le : sam. 19 févr. 2011 11:58
Status : Hors ligne

Re: [..] Réaliser un bouton "interactif"

#4

Message par Xtend »

En effet, c'est bien cela (enfin, je pense)
J'avais essayé en l'enlevant mais ça marchait pas (le script se lançait mais les boutons étaient pas "interactifs").

Savez-vous comment résoudre le problème ?
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Réaliser un bouton "interactif"

#5

Message par pierrotm777 »

Je pense avoir trouvé une solution :
Dans l'UDF, je vous propose de commenter le Adlibregister
De remplacer :

Code : Tout sélectionner

Global $pic__down[1000], $pic__over[1000]
par:

Code : Tout sélectionner

Global $pic__down[1000], $pic__over[1000],$timer = TimerInit (),$diff,$o_object
 
► Afficher le texte
Puis de modifier votre script ainsi !
► Afficher le texte
Modifié en dernier par pierrotm777 le lun. 14 mars 2011 18:31, modifié 1 fois.
Xtend
Niveau 4
Niveau 4
Messages : 54
Enregistré le : sam. 19 févr. 2011 11:58
Status : Hors ligne

Re: [..] Réaliser un bouton "interactif"

#6

Message par Xtend »

Ben dis-donc quel rapidité ! :shock:
Le problème venait bien de la donc je te remercie beaucoup pour ton aide. :wink:

Maintenant, il ne me reste plus, qu'à faire en sorte de rajouter une troisième image pour quand on clique dessus.
J'imagine qu'il faut faire ça avec des "Case", non ?
Si ce n'est pas ça, pourrais-tu m'indiquer comment m'y prendre, ce serait très gentil de ta part ;)
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Réaliser un bouton "interactif"

#7

Message par pierrotm777 »

Vous avez déjà 4 exemple de boutons créés avec la fonction _GUICtrlCreatePic_Set_On_Over

Vous pouvez donc créer autant de bouton dont vous avez besoin :
Local $boutonnouveau1 = _GUICtrlCreatePic_Set_On_Over("exit.gif", "exitover.gif", 180, 131, 20, 20)
Il faudra juste le placer là où vous en avez besoin :

Code : Tout sélectionner

_GUICtrlCreatePic_Set_On_Over("nom image", "nom image au passage de la souris", position x, position y, taille x en pixel, taille y en pixel)
puis pour chaque nouveau bouton , ajoutez effectivement un nouveau case qui indiquera l'action à réaliser.

Code : Tout sélectionner

case $boutonnouveau1
    MsgBox(0, "HAL Info", "I am sorry Dave, I can't do that !")
:wink:
Xtend
Niveau 4
Niveau 4
Messages : 54
Enregistré le : sam. 19 févr. 2011 11:58
Status : Hors ligne

Re: [..] Réaliser un bouton "interactif"

#8

Message par Xtend »

Si j'ai bien compris, votre méthode consisterai à changer l'image lorsque qu'on clique dessus par un "Case".

Cependant, je pense qu'il est possible de modifier l'UDF de façon à écrire :

Code : Tout sélectionner

_GUICtrlCreatePic_Set_On_Over("nom image", "nom image au passage de la souris", [color=#FF0000][b]"nom image au clic"[/b][/color], position x, position y, taille x en pixel, taille y en pixel)
Mais je sais pas comment m'y prendre :?
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Réaliser un bouton "interactif"

#9

Message par pierrotm777 »

Ici l'image ne change qu'au passage de la souris sur le bouton !
Je vous conseil de créer deux objets pour un nouveau bouton avec votre éditeur graphique préféré :
Par exemple, copiez next.jpg en bouton1.jpg et nextover.jpg par boutonover1.jpg et éditez les , puis modifiez les selon votre besoin .
Vous pouvez aussi trouver des boutons sur le net un peu partout et les renommer !

Une fois ces deux graphiques créés, il vous reste à créer le bouton.
Si vous regardez bien les boutons, ils sont, ici, espacés de 40 pixels!
Le bouton le plus bas étant le bouton $exit, placé en x=180,y=131 et de taille x=20,y=20

Code : Tout sélectionner

Local $exit = _GUICtrlCreatePic_Set_On_Over("exit.gif", "exitover.gif", 180, 131, 20, 20)
Le nouveau bouton pourrais donc être par exemple décalé de 40 pixels, ce qui donnerais:

Code : Tout sélectionner

Local $bouton1 = _GUICtrlCreatePic_Set_On_Over("bouton1.jpg", "boutonover1.jpgf", 180, 171, 20, 20)
Xtend
Niveau 4
Niveau 4
Messages : 54
Enregistré le : sam. 19 févr. 2011 11:58
Status : Hors ligne

Re: [..] Réaliser un bouton "interactif"

#10

Message par Xtend »

Je crois que vous avez pas compris ma question ou je me suis mal exprimé.
Je ne chercher pas à créer d'autres boutons pour l'instant, je cherche juste à en faire un.

Je vais essayer des résumer ce que je veux faire afin que ce soit plus compréhensible :

Il y a trois étapes importantes chez la vie d'un bouton (en ayant un peu d'imagination ^^) :
- le premier, c'est la création (lors du lancement du script)
- le second, c'est le passage de la souris
- le troisième, c'est le clic par la souris (actionnant donc une action)


Mais bon, j'ai réussi à modifier l'UDF en créant la variable $pic_surover et ça à l'air de marcher.

J'ai rajouté la "Case" avec

Code : Tout sélectionner

Case $msg = $oo_object
GUICtrlSetImage($oo_object, $pic__surover[$oo_object])


Voici le code :
► Afficher le texte
Je passe le problème en résolu.
@ pierrotm777 : je te remercie pour ton aide ;)
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [R] Réaliser un bouton "interactif"

#11

Message par matwachich »

Bon, je sais que le sujet est résolu mais je vous donne 2 liens qui m'ont permis de faire exactement ce que tu veut
http://www.autoitscript.com/forum/topic ... hover-udf/
http://www.autoitscript.com/forum/topic ... icons-au3/
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Xtend
Niveau 4
Niveau 4
Messages : 54
Enregistré le : sam. 19 févr. 2011 11:58
Status : Hors ligne

Re: [R] Réaliser un bouton "interactif"

#12

Message par Xtend »

matwachich a écrit :Bon, je sais que le sujet est résolu mais je vous donne 2 liens qui m'ont permis de faire exactement ce que tu veut
http://www.autoitscript.com/forum/topic ... hover-udf/
http://www.autoitscript.com/forum/topic ... icons-au3/
Ben, pas tout à fait résolu car je n'arrive pas à faire afficher une background à cette UDF lorsque la souris passe sur le bouton :evil:

J'avais déjà vu le second mais pas le premier, je pense que je vais m'en servir :p
Merci pour ta participation ;)
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [R] Réaliser un bouton "interactif"

#13

Message par matwachich »

Ya pas de quoi!
Je comptai faire un UDF de création de boutons exactement comme tu les demandes, sauf qu'il sera basé sur des fichiers icone, et pas png ou jpg, car la transparence est plus simple à gérer.
Grosso-modo, je fais comme cela (exemple 2 de l'UDF icons.au3):

Code : Tout sélectionner

GUICreate('Example2', 216, 128)
$Icon = GUICtrlCreateIcon('', 0, 40, 40, 48, 48)
_GuiCtrlSetOnHover(-1, '_change', '_change')
GUISetState()

_SetIcon($Icon, 'icon_normale', 0, 48, 48)

Do
    Sleep(100)
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func _change($hCtrl, $iFlag, $hWin)
    Switch $iFlag
        Case 1
            _SetIcon($hCtrl, 'icon_normale', 0, 48, 48)
        Case 2
            _SetIcon($hCtrl, 'icon_hover', 0, 48, 48)
    EndSwitch
EndFunc

GUIDelete()
PS: j'ai peut être inversé les case de $iFlag (voir la doc. de l'UDF OnHover)

Quand l'UDF sera prêt, je posterai un lien ici!
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Xtend
Niveau 4
Niveau 4
Messages : 54
Enregistré le : sam. 19 févr. 2011 11:58
Status : Hors ligne

Re: [R] Réaliser un bouton "interactif"

#14

Message par Xtend »

Ok, je te souhaite bonne chance pour ton UDF ;)
Dommage que tu te contente seulement des icônes (ce qui est déjà pas mal faut avouer ^^).
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [R] Réaliser un bouton "interactif"

#15

Message par matwachich »

En effet, je me contente d'icones, mais je créer d'abord mon image sous GIMP en png puis j'utilise SimplyIcon (google) qui est pas mal et très simple

Sinon, voici l'UDF
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Xtend
Niveau 4
Niveau 4
Messages : 54
Enregistré le : sam. 19 févr. 2011 11:58
Status : Hors ligne

Re: [R] Réaliser un bouton "interactif"

#16

Message par Xtend »

Salut,

Ben j'ai testé ton UDF et il marche pas chez moi.
J'ai donc ouvert les fichiers au3, je me suis rendu compte que :
- 1) tu mettais tes fichiers dans un dossier "perso" (exemple : #include <perso\Icons.au3>) donc j'ai supprimé le dossier "perso" étant donné que j'inclue les UDF directement dans le dossier "Include". Cependant, ça marchait pas non plus.

- 2) Tu mets l'include :
#include <GUICtrlOnHover.au3>
or dans le dossier include de AutoIt, il existe :
#include <GUICtrlSetOnHover.au3>

Est-ce une erreur d'écriture ou une UDF que tu as oubliés de mettre dans zip ?
Je pencherais plutôt pour une UDF car tu l'avais mis dans le dossier "perso". Si tel est le cas, merci de le mettre dans ton zip pour ceux qui comme moi, ne l'ont pas.

- 3) En remplaçant l'include, j'ai l'erreur suivante :
► Afficher le texte
J'espère que tu solutionneras ces bugs ;)
Répondre