Utiliser un ControlId comme paramètre

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 11:57
Status : Hors ligne

Utiliser un ControlId comme paramètre

#1

Message par Nicoloquinte »

bonjour :mrgreen:

pendant ces vacances , j'ai décidé de programmer un petit programme fort sympathique ,c'est a dire un colorpicker extremement complet (comme ma vie est passionante :) )

mais voila , j'ai une fonction (trouvée sur le forum)
Func _GUICtrlCreateGradient($nStartColor, $nEndColor, $nX, $nY, $nWidth, $nHeight)
    Local $color1R = _ColorGetRed($nStartColor)
    Local $color1G = _ColorGetGreen($nStartColor)
    Local $color1B = _ColorGetBlue($nStartColor)

    Local $nStepR = (_ColorGetRed($nEndColor) - $color1R) / $nHeight
    Local $nStepG = (_ColorGetGreen($nEndColor) - $color1G) / $nHeight
    Local $nStepB = (_ColorGetBlue($nEndColor) - $color1B) / $nHeight

    GuiCtrlCreateGraphic($nX, $nY, $nWidth, $nHeight)
    For $i = 0 To $nHeight - $nY
        $sColor = "0x" & StringFormat("%02X%02X%02X", $color1R+$nStepR*$i, $color1G+$nStepG*$i, $color1B+$nStepB*$i)
        GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $sColor, 0xffffff)
        GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 0, $i)
        GUICtrlSetGraphic(-1, $GUI_GR_LINE, $nWidth, $i)
    Next
EndFunc
Le but de cette fonction est de faire de jolis dégradés :arrow:

Mais on peut voir a plusieurs endroits GuiCtrlSetGraphic(-1 ....


Le problème ici c'est que je doit utiliser cette fonction pour trois (ou plus ) "graphic"
et la jeme heurte a quelque chose , comment remplacer -1 par une variable comprenant le controlID , peut etre doit-je utiliser le Handle ...


Merci d'avance :mrgreen:
Nico ¤_¤
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Utiliser un COntrolId comme paramètre

#2

Message par orax »

GUICtrlCreateGraphic retourne justement un controlID.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 11:57
Status : Hors ligne

Re: Utiliser un ControlId comme paramètre

#3

Message par Nicoloquinte »

jusquela je pense que j'avais compri :wink:
mais c'est pour inclure un controlID dans la fonction
_GUICtrlCreateGradient($color1, $color2, 74, 70, 16, 168,$ControlIDdugraphic)
marcherait?
avec
 Func _GUICtrlCreateGradient($nStartColor, $nEndColor, $nX, $nY, $nWidth, $nHeight,$graph)
    Local $color1R = _ColorGetRed($nStartColor)
    Local $color1G = _ColorGetGreen($nStartColor)
    Local $color1B = _ColorGetBlue($nStartColor)

    Local $nStepR = (_ColorGetRed($nEndColor) - $color1R) / $nHeight
    Local $nStepG = (_ColorGetGreen($nEndColor) - $color1G) / $nHeight
    Local $nStepB = (_ColorGetBlue($nEndColor) - $color1B) / $nHeight

    GuiCtrlCreateGraphic($nX, $nY, $nWidth, $nHeight)
    For $i = 0 To $nHeight - $nY
        $sColor = "0x" & StringFormat("%02X%02X%02X", $color1R+$nStepR*$i, $color1G+$nStepG*$i, $color1B+$nStepB*$i)
        GUICtrlSetGraphic($graph, $GUI_GR_COLOR, $sColor, 0xffffff)
        GUICtrlSetGraphic($graph, $GUI_GR_MOVE, 0, $i)
        GUICtrlSetGraphic($graph, $GUI_GR_LINE, $nWidth, $i)
    Next
EndFunc
parce que pourl'instant , çane marche pas trop :mrgreen:
Nico ¤_¤
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: Utiliser un ControlId comme paramètre  

#4

Message par walkson »

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Color.au3>
#include <Array.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 700, 200, 192, 124)
Global $Button1 = GUICtrlCreateButton("Button1", 16, 8, 81, 25)

#EndRegion ### END Koda GUI section ###
Local $AA[4]
GUISetState(@SW_SHOW)
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

    Case $Button1
       $AA[0] = _GUICtrlCreateGradient(0xFFFFFF, 0x0000FF, 0, 50, 150, 150)
       Sleep(100)
       $AA[1] = _GUICtrlCreateGradient(0xFFFF00, 0x0000FF, 150, 50, 150, 150)
       Sleep(100)
       $AA[2] = _GUICtrlCreateGradient(0xFF0000, 0x0000FF, 300, 50, 150, 150)
       Sleep(100)
       $AA[3] = _GUICtrlCreateGradient(0x000000, 0x0000FF, 450, 50, 150, 150)
       GUISetState(@SW_HIDE)
       GUISetState(@SW_SHOW)
       _ArrayDisplay($AA)
    Case $AA[0] To $AA[3]
       If $nMsg > 0 Then MsgBox(0,"","id du graph " & $nMsg)
 EndSwitch
WEnd

 Func _GUICtrlCreateGradient($nStartColor, $nEndColor, $nX, $nY, $nWidth, $nHeight)
    Local $graph = ""
   Local $color1R = _ColorGetRed($nStartColor)
    Local $color1G = _ColorGetGreen($nStartColor)
    Local $color1B = _ColorGetBlue($nStartColor)

    Local $nStepR = (_ColorGetRed($nEndColor) - $color1R) / $nHeight
    Local $nStepG = (_ColorGetGreen($nEndColor) - $color1G) / $nHeight
    Local $nStepB = (_ColorGetBlue($nEndColor) - $color1B) / $nHeight

    $graph = GuiCtrlCreateGraphic($nX, $nY, $nWidth, $nHeight)
    For $i = 0 To $nHeight - $nY
        $sColor = "0x" & StringFormat("%02X%02X%02X", $color1R+$nStepR*$i, $color1G+$nStepG*$i, $color1B+$nStepB*$i)
        GUICtrlSetGraphic($graph, $GUI_GR_COLOR, $sColor, 0xffffff)
        GUICtrlSetGraphic($graph, $GUI_GR_MOVE, 0, $i)
        GUICtrlSetGraphic($graph, $GUI_GR_LINE, $nWidth, $i)
    Next
   Return $graph ;retourne l'ID du graphic
EndFunc
le GUISetState(@SW_HIDE)
GUISetState(@SW_SHOW) n'est pas très joli mais c'est ce que j'ai trouvé de plus rapide pour actualiser la gui (y a peut être mieux)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 11:57
Status : Hors ligne

Re: Utiliser un ControlId comme paramètre

#5

Message par Nicoloquinte »

Hoooo merci beaucoup , je n'avais pas envisagé de metre la zone de dessin dans la fonction elle même , Brillant :mrgreen:
Nico ¤_¤
Répondre