[R] Recuperation de clic sur image

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

[R] Recuperation de clic sur image

#1

Message par Iste »

Salutations,

J'utilise Autoit depuis un certain temps, mais je n'ai jamais utilisé d'interface graphique dans mes scripts. Seulement, la je suis obligé d'y passer :/

Je suis sur que pour vous ce sera tres simple, je voudrais juste afficher une fenetre contenant plein de petites image, et effectuer une action quand on clic dessus (je sais deja quoi mettre dans les "If Then" ^^)

Merci beaucoup d'avance, je vais continuer de lire la doc en attendant.

Edit : huhu, c'est pas si dur que ca en faite ^^ j'arrive a afficher une image dans une fenetre, mais aucune idee de comment faire pour declancher un truc quand je clic dessus :/ je vais regarder du coté de "$msg = GUIGetMsg()"

Edit : J'ai reussit a afficher tout les images rapidement grace a ca :

Code : Tout sélectionner

#include <GUIConstants.au3>

GUICreate("My GUI", 500,400)  ; will create a dialog box that when displayed is centered
GUISetBkColor (0x000000)

$x = 0
$y = 0
$img = 0
While $img < 79
GUICtrlCreatePic("images/img ("&$img&").gif",$x,$y,50,50)
$x = $x+ 50
$img = $img+ 1
If $x >450 Then 
    $x=0
    $y = $y+ 50
EndIf

Wend
(mes image se noment toute "img (x).gif" dans le dossier "images")

Je vais utiliser les coordonées de la souris pour savoir sur quel image se fait le clic

Edit : Ha ben non, ya plus simple, mais je sais pas comment l'utiliser...
Comment faire pour recuperer les clic sur les differantes "instance" ?
Image
Modifié en dernier par Iste le jeu. 04 déc. 2008 15:23, modifié 1 fois.
Signez ici
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: Recuperation de clic sur image

#2

Message par BeCool »

Bonjour,

Merci de respecter les règles du forum en ajoutant des balises a votre titre et en allant vous présenter dans la section concernée.

Pour ce qui est de votre demande, il suffit de faire en sorte qu'il y ait une réaction quand on clique sur une image, et cette réaction enchainera une nouvelle réaction avec vos If et Then ;)
Avatar du membre
d3v1lm33
Niveau 2
Niveau 2
Messages : 28
Enregistré le : mer. 28 mai 2008 16:03
Status : Hors ligne

Re: Recuperation de clic sur image

#3

Message par d3v1lm33 »

salut je t'explique enregistre le handle de ton img dans une variable comme ceci

Code : Tout sélectionner

#include <GUIConstants.au3>

GUICreate("My GUI", 500,400)  ; will create a dialog box that when displayed is centered
GUISetBkColor (0x000000)
dim $image[79]
$x = 0
$y = 0
$img = 0
While $img < 79
$image[$img-1]=GUICtrlCreatePic("images/img ("&$img&").gif",$x,$y,50,50)
$x = $x+ 50
$img = $img+ 1
If $x >450 Then 
    $x=0
    $y = $y+ 50
EndIf

Wend
guisetstate()
while 1
$code=guigetmsg()
if $code=-3 then exit ; pour quitter c'est mieux ^^
for $a=1 to 79
if $code=$image[$a-1] then
;si l'image n°$a est cliqué ^^
end
next
wend
 
voila et si tu veux veut pour chaque un truc special

Code : Tout sélectionner

if $code=$image[$truc] then ;$truc est ton image-1
end
Venez ici poster les astuces que vous trouvez sur le web, nous les collectionnons !
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] Recuperation de clic sur image

#4

Message par Iste »

Merci tout plein des reponces (rapide ^^)
j'ai trouver comment faire a l'aide de

Code : Tout sélectionner

While 1
    $clic = GUIGetCursorInfo ()
    If $clic[2] <> 0 Then
        $nm = $clic[4]- 2
        
        If $nm = 1 Then [...]
        If $nm = 2 Then [...]
        If $nm = 3 Then [...]
            
    EndIf
    
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend
Alors je sais, c'est barbar, c'est pas stable, mais je suis pressé et ca marche :D
Mais, je vais bien etudier ton message d3v1lm33, car ca m'a l'air plus propre (pis t'as pris le temps de m'aider !)

Encore merci (je vais me presenter des que j'en ai fini, suis un peu pressé désolé ^^')
Signez ici
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [R] Recuperation de clic sur image

#5

Message par BeCool »

Tout vient à point à qui sait attendre ;)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] Recuperation de clic sur image

#6

Message par Iste »

Petit problem, quand je defocus ou reduit la fenetre, le

Code : Tout sélectionner

    $clic = GUIGetCursorInfo ()
    If $clic[2] = 1 Then
fait une erreur de type

Code : Tout sélectionner

Subscript used with non-Array variable.: 
$a = $clic[2] 
$a = $clic^ ERROR
>Exit code: 1    Time: 6.874
Edit :
probleme aussi avec ta vertion :/

Code : Tout sélectionner

==> Array variable subscript badly formatted.: 
$image[$img-1]=GUICtrlCreatePic("images/img ("&$img&").gif",$x,$y,50,50) 
$image[^ ERROR
Edit de l'edit : C'est bon, c'est juste que mes image comencent a 0, donc le -1 passait pas ^^

Edit : Problem resolu, je me suis basé sur le script de d3v1lm33, et ca marche super :)
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Recuperation de clic sur image

#7

Message par Tlem »

Bonsoir.

Perso, j'aurais préconisé le mode évènementiel ...

Code : Tout sélectionner

#include <GUIConstants.au3>
Opt("GUIOnEventMode", 1)

GUICreate("My GUI", 500, 400)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUISetBkColor(0x000000)
Dim $image[80], $x = 0, $y = 0

GUISetState()

For $img = 1 To 79 ; 1 de moins que $image[79] car on commence à 0.
    $image[$img] = GUICtrlCreatePic(@WindowsDir & "\Zapotec.bmp", $x, $y, 50, 50)
    GUICtrlSetOnEvent(-1, "ClicImg")
    $x += 50
    If $x > 450 Then
        $x = 0
        $y += 50
    EndIf
Next

While 1
    Sleep(100)
WEnd

Func ClicImg()
    MsgBox(64,"Info","Clic de l'image N°" & @GUI_CTRLID - 2 )
EndFunc

Func CLOSEClicked()
  Exit
EndFunc
Il y a juste une petite astuce sur le N° du contrôle qui est décalé de 2 dans le code ci-dessus, sinon l'idée est là. ;)
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
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] Recuperation de clic sur image

#8

Message par Iste »

Ha oui effectivement, je n'avai pas du temps penser a regarder par la :/
Merci beaucoup pour l'astuce, ca m'aidera surement plus tard :D
M'enfin, le tout est compilé et fonctionne tres bien ^^
Pour voir ce que ca donne, rdv par la bas : http://www.autoitscript.fr/forum/viewto ... f=6&t=2045
Signez ici
Répondre