En suivant ton conseil (et en galérant un peu mais c'est la règle du jeu...) je suis venu à bout de mon problème.
Je joins le code modifié pour n'afficher d’une seule région afin de ne pas alourdir le script.
Le clic droit (j'ai viré le code -qui fonctionne- traitant le clic gauche) modifie bien la couleur du candidat.
Je passe donc ce post en résolu.
Code : Tout sélectionner
Opt("MustDeclareVars", 1) ;0=no, 1=require pre-declaration
Opt("GUIOnEventMode", 1)
#Region Include
#include <ButtonConstants.au3>
#include <ColorConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIButton.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#EndRegion Include
#Region Déclarations
Global $VerticalCase, $HorizontalCase, $i, $j, $k, $VerticalCandidat, $HorizontalCandidat ; pointeurs de boucles
Global $FenetresRegion[9]; permet de tracer les régions
Global $FenetresCase[81], $EtiquettesCase[81]; permet de tracer et d'afficher le contenu des cases
Global $FenetresCandidat[729], $EtiquettesCandidat[729], $TableauDesValeursInitialesCandidats[729]; permet de tracer et d'afficher le contenu des candidats
Global $TableauDesValeursCourantesCandidats; stocke la valeur actualisée des candidats possibles
Global $TableauDesValeursCases[81]; stocke la valeur des cases considérées comme bonnes et saisies par le joueur
For $i = 0 To 80
$TableauDesValeursCases[$i] = 0; initialise le tableau ci-dessus
Next
#EndRegion Déclarations
; Créer et tracer la matrice (Sudoku_Creation_Matrice)
; trace la matrice principale
Global $FenetreMatrice = GUICreate("Aide à la résolution de grilles Sudoku", 222, 260, -1, -1);-1111, 250);whlt
GUISetBkColor($COLOR_BLUE)
GUISetOnEvent($GUI_EVENT_CLOSE, "Terminer")
Global $BQuitter = GUICtrlCreateButton("Quitter", 1, 221, 220, 38);ltwh
GUICtrlSetOnEvent($BQuitter, "Terminer")
GUISetState(@SW_SHOW, $FenetreMatrice)
GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "ClickDroitCandidat")
; 3= jaune très clair, 4= fuschia, 5= gris foncé, 6 = vert foncé, 7 vert clair, 8 rose foncé, 9 bleu foncé, 10 gris moyen, 11 vert très clair, 12 bleu très foncé, 13 caca d'oie, 15 rouge vif, 17 bleu ciel, 18 bleu-vert, 19 blanc, 20 jaune citron
; ------------------------------ MsgBox('','',"Hauteur : " & @DesktopHeight & "Largeur : " & @DesktopWidth)
; trace les fenêtres des régions
For $VerticalRegion = 0 To 0 ; trace les trois lignes
For $HorizontalRegion = 0 To 0 ; trace les régions d'une même ligne
; définit les fenêtres des régions
$FenetresRegion[$HorizontalRegion + 3 * $VerticalRegion] = GUICreate("", 210, 210, 2 + 218 * $HorizontalRegion, 218 * $VerticalRegion + 2, $WS_CHILD, $WS_EX_OVERLAPPEDWINDOW, $FenetreMatrice);whlt
; affiche les fenêtres des régions
GUISetState(@SW_SHOW, $FenetresRegion[$HorizontalRegion + 3 * $VerticalRegion])
GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "ClickDroitCandidat")
Next
Next
;~ ; trace les cases
For $VerticalCase = 0 To 2
For $HorizontalCase = 0 To 2
; définit les fenêtres des cases
$FenetresCase[$HorizontalCase + 3 * $VerticalCase] = GUICreate("", 65, 65, 2 + 70 * $HorizontalCase, 2 + 70 * $VerticalCase, $WS_CHILD, $WS_EX_OVERLAPPEDWINDOW, $FenetresRegion[0]);whlt
; définit les étiquettes des cases et les crée avec un contenu vide
$EtiquettesCase[$HorizontalCase + 3 * $VerticalCase] = GUICtrlCreateLabel("", 0, 13, 65, 65, $SS_CENTER) ; ltwh
GUICtrlSetFont(-1, 24, 40, 0, "Arial")
GUICtrlSetColor(-1, $COLOR_MAROON)
; cache l'affichage de l'étiquette d'une case afin de permettre celui des candidats de cette case
GUICtrlSetState(-1, $GUI_HIDE)
; affiche la fenêtre de la case
GUISetState(@SW_SHOW, $FenetresCase[$HorizontalCase + 3 * $VerticalCase])
;~ GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "ClickDroitCandidat")
Next
Next
; trace les candidats
For $Cases = 0 To 8
For $VerticalCandidat = 0 To 2
For $HorizontalCandidat = 0 To 2
; définit les fenêtres des candidats
$FenetresCandidat[$HorizontalCandidat + 3 * $VerticalCandidat + 9 * $Cases] = GUICreate("", 21, 21, 21 * $HorizontalCandidat, 21 * $VerticalCandidat, $WS_CHILD, $WS_EX_OVERLAPPEDWINDOW, $FenetresCase[$Cases]);whlt
; Appelle la prodécure de traitement du candidat
GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "ClickDroitCandidat")
; affiche les fenêtres des candidats
GUISetState(@SW_SHOW, $FenetresCandidat[$HorizontalCandidat + 3 * $VerticalCandidat + 9 * $Cases])
; définit les étiquettes des candidats
$EtiquettesCandidat[$HorizontalCandidat + 3 * $VerticalCandidat + 9 * $Cases] = GUICtrlCreateLabel(1 + $HorizontalCandidat + 3 * $VerticalCandidat, 5, 5, -1, -1);, -1, -1) ltwh
; initialise la valeur de départ des étiquettes candidats
$TableauDesValeursInitialesCandidats[$HorizontalCandidat + 3 * $VerticalCandidat + 9 * $Cases] = 1 + $HorizontalCandidat + 3 * $VerticalCandidat
GUICtrlSetFont(-1, 9, 900, 0, "Arial")
GUICtrlSetColor(-1, $COLOR_BLACK);YELLOW)
Next
Next
Next
; initialise la valeur courante des étiquettes candidats (sera mise à jour au fur et à mesure du jeu
$TableauDesValeursCourantesCandidats = $TableauDesValeursInitialesCandidats
While 1
WEnd
Func ClickDroitCandidat()
Local $a
$a = GUIGetCursorInfo(@GUI_WinHandle)
GUICtrlSetColor($EtiquettesCandidat[$a[4] - 13], $COLOR_RED)
EndFunc ;==>ClickDroitCandidat
Func Terminer()
Exit
EndFunc ;==>Terminer