Page 1 sur 1

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

Posté : mer. 28 déc. 2016 11:23
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.

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

Posté : mer. 28 déc. 2016 15:42
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...)

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

Posté : mer. 28 déc. 2016 16:40
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