Je me suis lancé dans la fabrication d'une GUI pour facilité l'utilisation d'un outil d'extraction pour des collègues de boulot.
Après une rude bataille pour réussir à remplacer les boutons par des icônes "cliquables" avec une changement d'images lorsque le curseur de la souris passe dessus. (tous cela à partir d'une lecture d'un .dll)
Etant nouveau pour moi il a fallut que je fase beaucoup de recherches.
J'ai finalement trouvé cet UDF (http://www.autoitscript.fr/forum/viewto ... =21&t=7132) qui est extrêmement simple d'utilisation je dois dire.
Après test et configuration de cette partie de mon code, tous va bien, cela fonctionne parfaitement.
Cependant, je ne pourrais pas dire pourquoi et la raison, mais maintenant, un des icônes me donne un phénomène bizarre.
Ce "bouton Icone" sert en fait à ouvrir un FileOpenDialog() pour sélectionner les fichier souhaités. Maintenant, ça m'ouvre bien la fenêtre pour sélectionner le fichier, mais dès que je bouge la souris, l'icône disparait !
Si je m'amuse a déplacer ma souris sur les autres icônes, après que le premier ai disparu, eux aussi disparaissent.
Lorsque je ferme la fenêtre FileOpenDialog(), et que je repasse sur les icônes, ils réapparaissent...(redéclenchement des Icons_Hover)
La seule chose que j'ai fait entre le moment où ça marchait et le moment ou ça buggait, c'est simplement que j'ai rajouté la fonction _GUICtrlListView_CreateArray() dans l'include "GUIListView.au3" (je ne vois pas comment ça pourrait être lié)
Voici une partie de ma GUI si jamais il y a besoin
Code : Tout sélectionner
;include pour la GUI
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#include <GUIListView.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <_GUIXViewEx.au3>
;Include perso
#include "3StatIcon.au3"
#include <ID_Constantes_v1.0.au3>
#include <toolkit_v1.0.au3>
#include <Array.au3>
#region ### START Koda GUI section ###
Global $GUI = GUICreate($k_GUI_Title, 601, 509, 192, 124)
;GUISetBkColor(0xFFFFFF)
;Création des boutons icônes
Global $I_OpenFile = _3StatIcon_Create("Icons.dll",6,10,5,40,40,"Icons.dll",7,"Icons.dll",7)
Global $I_OpenTree = _3StatIcon_Create("Icons.dll",8,60,5,40,40,"Icons.dll",9,"Icons.dll",9)
Global $I_Extract = _3StatIcon_Create("Icons.dll",4,110,5,40,40,"Icons.dll",5,"Icons.dll",5)
Global $I_Option = _3StatIcon_Create("Icons.dll",10,160,5,40,40,"Icons.dll",11,"Icons.dll",11)
;Global $I_Log = _3StatIcon_Create("Icons.dll",6,210,5,40,40,"Icons.dll",7) ==> Pour rajout des logs plus tard
Global $I_About = _3StatIcon_Create("Icons.dll",0,210,5,40,40,"Icons.dll",1,"Icons.dll",1)
Global $I_Exit = _3StatIcon_Create("Icons.dll",2,260,5,40,40,"Icons.dll",3,"Icons.dll",3)
;Ajout des bulles infos sur les icônes
GUICtrlSetTip($I_OpenFile,"Ouvrir un fichier")
GUICtrlSetTip($I_OpenTree,"Ouvrir une arborescence")
GUICtrlSetTip($I_Extract,"Commencer l'extration")
GUICtrlSetTip($I_About,"A propos de " & $k_GUI_Title)
GUICtrlSetTip($I_Exit,"Quitter le programme")
;GUICtrlSetTip($I_Log,"Ouvrir le dossier log")
GUICtrlSetTip($I_Option,"Ouvrir les options")
;Création de la ListView
Global $TopList = GUICtrlCreateListView($k_TopList, 0, 56, 601, 430, BitOR($LVS_EDITLABELS, $LVS_REPORT))
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 150)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 290)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 50)
_GUICtrlListView_SetExtendedListViewStyle($TopList, BitOR($LVS_EX_GRIDLINES, $LVS_EX_TRACKSELECT, $LVS_EX_FULLROWSELECT))
Global $BottomList = GUICtrlCreateListView($k_BottomList, 0, 486, 601, 29)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 250)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 145)
;Création du menu contextuel pour la TopList
Global $TopListcontext = GUICtrlCreateContextMenu($TopList)
Global $MenuTopList1 = GUICtrlCreateMenuItem("Extraire le fichier", $TopListcontext)
Global $MenuTopList2 = GUICtrlCreateMenuItem("Supprimer le fichier", $TopListcontext)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $I_OpenFile
GUICtrlSetState($I_OpenFile,$GUI_DISABLE)
$f_Array = _OpenFiles() ;Array retournée avec les liens des fichiers
$nb_Items = _GUICtrlListView_GetItemCount($TopList) ;On récupère le nombre d'items dans la liste
ConsoleWrite("Nombre d'items: " & $nb_Items & @CRLF)
Select
Case $nb_Items = 0
For $i = 0 To UBound($f_Array)-1
_AjoutItems($TopList,$f_Array[$i],$i,"PRET")
Next
Case Else
$items_Array = _GUICtrlListView_CreateArray($TopList)
For $x = 0 To UBound($f_Array)-1
$Compare = _Compare($f_Array[$x],$items_Array)
If $Compare = False Then
_AjoutItems($TopList,$f_Array[$x],$x,"PRET")
EndIf
Next
EndSelect
$nb_Items = _GUICtrlListView_GetItemCount($TopList)
$k_BottomList = "|" & $nb_Items & " Fichiers|x archive(s) extraite(s)| "
GUICtrlSetData($BottomList,$k_BottomList)
GUICtrlSetState($I_OpenFile,$GUI_ENABLE)
EndSwitch
WEnd
Si vous avez une idée de ce bug (d'affichage simplement pour moi ?) ou bien d'une mauvaise utilisation de la GUI (vraiment pas impossible)
Merci d'avance
0xyg3n
/edit1: Désolé, le code n'est pas très beau, mais je suis en phase de test, donc les commentaires et la mise en forme plus jolie se fait après pour moi ^^
/edit2: Tiens, si je le désactive ($GUI_DISABLE) pour le contrôle au moment ou je lance la fonction, l'icône disparait et réapparait tout de suite. Mais les autres peuvent toujours disparaitre si je passe dessus.