[..] Détecter le click sur une Picture (GUI)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
locos974
Niveau 5
Niveau 5
Messages : 187
Enregistré le : sam. 08 oct. 2011 22:07
Status : Hors ligne

[..] Détecter le click sur une Picture (GUI)

#1

Message par locos974 »

Bonjour,

Je reviens vers vous concernant GUICtrlCreatePic !
Je souhaite savoir quand je clique sur une Picture en particulier (et récupérer le path de l'image) cependant, j'ai procéder de cette manière pour créer mes pictures :
Func createAllPics()
   For $i = 0 To UBound($Pic) - 1
     GUICtrlDelete($Pic[$i])
   Next
   $Pic[0] = GUICtrlCreatePic("", 16, 384, 132, 132, $WS_BORDER)
   $Pic[1] = GUICtrlCreatePic("", 16, 527, 132, 132, $WS_BORDER)
   $Pic[2] = GUICtrlCreatePic("", 160, 384, 132, 132, $WS_BORDER)
   $Pic[3] = GUICtrlCreatePic("", 160, 528, 132, 132, $WS_BORDER)
   $Pic[4] = GUICtrlCreatePic("", 304, 384, 132, 132, $WS_BORDER)
   $Pic[5] = GUICtrlCreatePic("", 304, 528, 132, 132, $WS_BORDER)
   $Pic[6] = GUICtrlCreatePic("", 448, 384, 132, 132, $WS_BORDER)
   $Pic[7] = GUICtrlCreatePic("", 448, 528, 132, 132, $WS_BORDER)
   $Pic[8] = GUICtrlCreatePic("", 616, 384, 132, 132, $WS_BORDER)
   $Pic[9] = GUICtrlCreatePic("", 616, 528, 132, 132, $WS_BORDER)
   $Pic[10] = GUICtrlCreatePic("", 760, 384, 132, 132, $WS_BORDER)
   $Pic[11] = GUICtrlCreatePic("", 760, 528, 132, 132, $WS_BORDER)
   $Pic[12] = GUICtrlCreatePic("", 904, 384, 132, 132, $WS_BORDER)
   $Pic[13] = GUICtrlCreatePic("", 904, 528, 132, 132, $WS_BORDER)
   $Pic[14] = GUICtrlCreatePic("", 1048, 384, 132, 132, $WS_BORDER)
   $Pic[15] = GUICtrlCreatePic("", 1048, 528, 132, 132, $WS_BORDER)
EndFunc
Vous allez sûrement me demander pourquoi je fait de cette manière ? Et bien il faut savoir que quand on fait un GUICtrlSetImage($Pic.., ""), on obtient un décalage de l'élément dans la GUI, pourquoi ? je sais pas, et le seul moyen et de détruire et de recréer l'élément ( pas très propre, mais c'est la seul solution à ce problème ).

En faisant des recherches sur la première question : "Je souhaite savoir quand je clique sur une Picture en particulier (et récupérer le path de l'image)"
Je suis tombé sur les exemples de la doc :
Switch $nMsg
     Case $Pic[0]
           ....
Endswitch
Sauf que.. ça ne marche pas :P
Une solution ?

Merci,
Locos.
Cordialement Locos974.
Avatar du membre
mimione
Niveau 4
Niveau 4
Messages : 91
Enregistré le : mer. 30 avr. 2008 18:11
Localisation : Bretagne
Status : Hors ligne

Re: [..] Détecter le click sur une Picture (GUI)

#2

Message par mimione »

Bonjour

Je suppose que $Pic[] est bien déclaré en "Global".
L'événement "click" est-il bien détecté ?? (un petit "beep() juste dans le " Case $Pic[0]" permet de le savoir rapidement...)
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Détecter le click sur une Picture (GUI)

#3

Message par walkson »

Bonjour,
Y a peut être mieux ?
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <File.au3>

Global $array = _FileListToArray(@DesktopDir,"*.bmp",0,True);2 bmp sur le bureau
Global $Pic1[2][2]
$Pic1[0][1] = $array[1]
$Pic1[1][1] = $array[2]
Global $Form1 = GUICreate("Form1", 353, 241, 192, 124)
$Pic1[0][0] = GUICtrlCreatePic($Pic1[0][1], 56, 3, 193, 50)
$Pic1[1][0] = GUICtrlCreatePic($Pic1[1][1], 56, 66, 193, 50)
GUISetState(@SW_SHOW)
_ArrayDisplay($Pic1)

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit
    Case $Pic1[0][0] To $Pic1[1][0]
       If $nMsg = $Pic1[0][0] Then MsgBox(0,"pic 1",$Pic1[0][1])
       If $nMsg = $Pic1[1][0] Then MsgBox(0,"pic 2",$Pic1[1][1])
 EndSwitch
WEnd
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre