[R] Génération de variables et GUICtrlOnHover.au3

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pumilio
Niveau 3
Niveau 3
Messages : 32
Enregistré le : lun. 03 déc. 2012 16:59
Status : Hors ligne

[R] Génération de variables et GUICtrlOnHover.au3

#1

Message par pumilio »

Bonjour à tous,

J'utilise l'UDF "GUICtrlOnHover.au3" pour mettre des contrôles "label" en surbrillance au passage de la souris mais je me retrouve face à une situation que je n'arrive pas à résoudre (mon tout petit niveau en AutoIt ne me permettant pas d'y voir claire.

Je souhaiterais pouvoir mettre en surbrillance un couple de "label" lorsque je passe la souris sur l'un, ce que je peux faire lorsque les labels sont créés un par un. Mais lorsque j'utilise une boucle fort pour créer mes "label" avec "Assign" je ne vois plus comment m'en sortir.

Mon code permettra de mieux me faire comprendre :
Les premiers "label" fonctionnent, mais je ne trouve pas comment faire pour les suivants :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#Include "GUICtrlOnHover.au3"

$hGUI = GUICreate("test", 230, 200, -1, -1)

$label1= GUICtrlCreateLabel("", 10, 20, 100, 24)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$label2= GUICtrlCreateLabel("", 120, 20, 100, 24)
GUICtrlSetBkColor(-1, 0xFFFFFF)
_GUICtrlSetOnHover($label1, "_1In", "_1Out", "_1Clic", "_1Relache")

$interligne = 60
For $i=1 To 5
	Assign("labelG"&$i,GUICtrlCreateLabel("", 10, $interligne-2, 100, 24), 2)
	GUICtrlSetBkColor(-1, 0xFFFFFF)
	Assign("labelD"&$i,GUICtrlCreateLabel("", 120, $interligne-2, 100, 24), 2)
	GUICtrlSetBkColor(-1, 0xFFFFFF)
	_GUICtrlSetOnHover(Eval("labelG"&$i), "_ligneIn", "_ligneOut", "_ligneClic", "_ligneRelache")
	$interligne = $interligne+25
Next

GUISetState(@SW_SHOW)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE


Func _ligneIn($CtrlID, $Param, $Param2)
		GUICtrlSetBkColor($CtrlID, 0xAAAAAA)
EndFunc
Func _ligneOut($CtrlID, $Param, $Param2)
		GUICtrlSetBkColor($CtrlID, 0xFFFFFF)
EndFunc


Func _1In($CtrlID, $Param, $Param2)
		GUICtrlSetBkColor($CtrlID, 0xAAAAAA)
		GUICtrlSetBkColor($label2, 0xAAAAAA)
EndFunc
Func _1Out($CtrlID, $Param, $Param2)
		GUICtrlSetBkColor($CtrlID, 0xFFFFFF)
		GUICtrlSetBkColor($label2, 0xFFFFFF)
EndFunc
Merci pour votre aide.

Bonne journée,

Pumilio
Modifié en dernier par pumilio le mar. 04 févr. 2020 14:16, modifié 1 fois.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Génération de variables et GUICtrlOnHover.au3  

#2

Message par walkson »

Bonjour,
Quand vous créez des contrôles "à la volée", il est beaucoup plus simple de les enregistrer dans un tableau
Comme vous souhaitez travailler en couple de labels, je vous propose un array en 2 colonnes où le $CtrlID sera retrouvé par _ArraySearch()
Une fois que la ligne contenant la valeur de l'ID est trouvée, il est facile de lire dans les deux colonnes.
#include <GUIConstantsEx.au3>
#Include "C:\Users\PC\Desktop\GUICtrl_SetOnHover\GUICtrlOnHover.au3"
#include <Array.au3>
$hGUI = GUICreate("test", 230, 200, -1, -1)

$label1= GUICtrlCreateLabel("a", 10, 20, 100, 24)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$label2= GUICtrlCreateLabel("z", 120, 20, 100, 24)
GUICtrlSetBkColor(-1, 0xFFFFFF)
_GUICtrlSetOnHover($label1, "_1In", "_1Out", "_1Clic", "_1Relache")

$interligne = 60
Global $array[5][2]
For $i=0 To 4
   $array[$i][0] = GUICtrlCreateLabel("aa", 10, $interligne-2, 100, 24)
   GUICtrlSetBkColor(-1, 0xFFFFFF)
   $array[$i][1] = GUICtrlCreateLabel("bb", 120, $interligne-2, 100, 24)
   GUICtrlSetBkColor(-1, 0xFFFFFF)
   _GUICtrlSetOnHover($array[$i][0], "_ligneIn", "_ligneOut", "_ligneClic", "_ligneRelache")
   _GUICtrlSetOnHover($array[$i][1], "_ligneIn", "_ligneOut", "_ligneClic", "_ligneRelache")
   $interligne = $interligne+25
Next
_ArrayDisplay($array,"Pour voir");ligne à supprimer
GUISetState(@SW_SHOW)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE


Func _ligneIn($CtrlID, $Param, $Param2)
      $index = _ArraySearch($array,$CtrlID)
         GUICtrlSetBkColor($array[$index][0], 0xAAAAAA)
         GUICtrlSetBkColor($array[$index][1], 0xAAAAAA)
EndFunc
Func _ligneOut($CtrlID, $Param, $Param2)
      $index = _ArraySearch($array,$CtrlID)
         GUICtrlSetBkColor($array[$index][0], 0xFFFFFF)
         GUICtrlSetBkColor($array[$index][1], 0xFFFFFF)
EndFunc


Func _1In($CtrlID, $Param, $Param2)
      GUICtrlSetBkColor($CtrlID, 0xAAAAAA)
      GUICtrlSetBkColor($label2, 0xAAAAAA)
EndFunc
Func _1Out($CtrlID, $Param, $Param2)
      GUICtrlSetBkColor($CtrlID, 0xFFFFFF)
      GUICtrlSetBkColor($label2, 0xFFFFFF)
EndFunc
Func _1Clic($CtrlID, $Param, $Param2)
      GUICtrlSetBkColor($CtrlID, 0xFFFF00)
      GUICtrlSetBkColor($label2, 0xFFFF00)
EndFunc
Func _ligneClic($CtrlID, $Param, $Param2)
      $index = _ArraySearch($array,$CtrlID)
         GUICtrlSetBkColor($array[$index][0], 0xFFFF00)
         GUICtrlSetBkColor($array[$index][1], 0xFFFF00)
EndFunc

N'oubliez pas de modifier l'adresse de l'include
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
pumilio
Niveau 3
Niveau 3
Messages : 32
Enregistré le : lun. 03 déc. 2012 16:59
Status : Hors ligne

Re: [..] Génération de variables et GUICtrlOnHover.au3

#3

Message par pumilio »

Un grand merci Walkson pour votre réponse :D .
C'est très claire, ça répond exactement à ma demande et ça me sera fort utile pour la suite.

Bonne journée.
Répondre