Code du potar Slider, [Resolu] OpenWindow et molette

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: OpenWindow et molette de la souris

Message par GallyHC »

Visiblement il y a un problème sur le slider jaune quand je met min = 100 et max = 255, le decalage avec la molette deconne et je ne trouve pas le pourquoi du comment. Si quelqu'un a une idee je susi prenneur.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: OpenWindow et molette de la souris

Message par GallyHC »

Encore une evolution mais toujours le prob sur le potar jaune.

Code : Tout sélectionner

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- INITIALISATION DES DIRECTIVES COMPILEUR.

DisableASM
EnableExplicit

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

;{ - STRUCTURE
Structure DMXSlider
  gadget.l
  x.l
  y.l
  w.l
  h.l
  hb.l
  pas.d
  min.l
  max.l
  state.l
  value.l
  WheelZoom.l
  forecolor.l
  backcolor.l
  disable.b
  lImage_01.l
  lImage_02.l
  lCanva_01.l
EndStructure
;}
;{ - CONSTANTES GLOBALS
Global numDMXSlider.l = 0
Global Dim DMXSlider.DMXSlider(numDMXSlider)
Global FontID1 = LoadFont(#PB_Any, "Century Gothic", 9, #PB_Font_HighQuality | #PB_Font_Bold)
;}
;{ - CONSTANTE
#DMXSlider_Color_01 = $8E6235
#DMXSlider_Color_02 = $E9D6C2
#DMXSlider_Color_03 = $D5B08C
#DMXSlider_Color_04 = $F9F3ED
#DMXSlider_Color_05 = $B88957
#DMXSlider_Color_06 = $DCBD9E
#DMXSlider_Color_07 = $E6D0B9
#DMXSlider_Color_08 = $E9D6C2
#DMX_Color_Default  = -1
#DMX_Color_White    = $FFFFFF
#DMX_Color_Gray     = $000000
#DMX_Color_Red      = $0000FF
#DMX_Color_Green    = $00FF00
#DMX_Color_Blue     = $FF0000
#DMX_Color_Cyan     = $FFFF00
#DMX_Color_Purple   = $FF00FF
#DMX_Color_Yellow   = $00FFFF
#DMX_Zoom_x1        = 1
#DMX_Zoom_x2        = 2
#DMX_Zoom_x4        = 4
#DMX_Zoom_x8        = 8
#DMX_Zoom_x16       = 16
#DMX_Zoom_x32       = 32
;}

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure.l ColorSubstitute(color.l, finalcolor.l)
; ROUTINE DE CHANGEMENT DES TEINTES DE COULEUR  
  Protected lTempsA.f
  Protected lTempsB.f
  Protected lColorR.l
  Protected lColorG.l
  Protected lColorB.l
  Protected lColorA.l
  Protected lShadeB.l
  Protected lShadeN.l

  lColorR = Red(color)
  lColorG = Green(color)
  lColorB = Blue(color)
  lColorA = Alpha(color)
  If     lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
    lTempsA = 255 / lColorB
    lShadeN = 255 - lColorB
    lColorB = 255
    lColorG = lTempsA * lColorG
    lColorR = lTempsA * lColorR
  ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
    lTempsA = 255 / lColorG
    lShadeN = 255 - lColorG
    lColorB = lTempsA * lColorB
    lColorG = 255
    lColorR = lTempsA * lColorR
  ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
    lTempsA = 255 / lColorR
    lShadeN = 255 - lColorR
    lColorB = lTempsA * lColorB
    lColorG = lTempsA * lColorG
    lColorR = 255
  Else
    lShadeN = 255
    lColorB = 255
    lColorG = 255
    lColorR = 255
  EndIf
  If     lColorB < lColorG And lColorB < lColorR
    lShadeB = 255 - lColorB
  ElseIf lColorG < lColorB And lColorG < lColorR
    lShadeB = 255 - lColorG
  ElseIf lColorR < lColorB And lColorR < lColorG
    lShadeB = 255 - lColorR
  Else
    lShadeB = 255
  EndIf  
  lColorR = Red(finalcolor)
  lColorG = Green(finalcolor)
  lColorB = Blue(finalcolor)
  If     lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
    lTempsA = 255 / lColorB
    lColorB = 255
    lColorG = lTempsA * lColorG
    lColorR = lTempsA * lColorR
  ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
    lTempsA = 255 / lColorG
    lColorB = lTempsA * lColorB
    lColorG = 255
    lColorR = lTempsA * lColorR
  ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
    lTempsA = 255 / lColorR
    lColorB = lTempsA * lColorB
    lColorG = lTempsA * lColorG
    lColorR = 255
  EndIf
  If      lColorB < lColorG And lColorB < lColorR
    lTempsA = 1 - lColorB / 255
    lColorG = (lColorG - lColorB) / lTempsA
    lColorR = (lColorR - lColorB) / lTempsA
    lColorB = 0
  ElseIf lColorG < lColorB And lColorG < lColorR
    lTempsA = 1 - lColorG / 255
    lColorB = (lColorB - lColorG) / lTempsA
    lColorR = (lColorR - lColorG) / lTempsA
    lColorG = 0
  ElseIf lColorR < lColorB And lColorR < lColorG
    lTempsA = 1 - lColorR / 255
    lColorB = (lColorB - lColorR) / lTempsA
    lColorG = (lColorG - lColorR) / lTempsA
    lColorR = 0
  EndIf
  lTempsA = 1 - lShadeB / 255
  lTempsB = (255 - lShadeN) / 255
  lColorR = (lColorR + (255 - lColorR) * lTempsA) * lTempsB
  If lColorR < 0
    lColorR = 0
  ElseIf lColorR > 255
    lColorR = 255
  EndIf
  lColorG = (lColorG + (255 - lColorG) * lTempsA) * lTempsB
  If lColorG < 0
    lColorG = 0
  ElseIf lColorG > 255
    lColorG = 255
  EndIf
  lColorB = (lColorB + (255 - lColorB) * lTempsA) * lTempsB
  If lColorB < 0
    lColorB = 0
  ElseIf lColorB > 255
    lColorB = 255
  EndIf
  ProcedureReturn (lColorR | lColorG << 8 | lColorB << 16 | lColorA << 24)
  
EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure.l SetFindDMXGadget(gadget.l)
; ROUTINE DE RECHERCHE DU GADGET DMX.
  Define i.l

  If numDMXSlider > 0
    For i=1 To numDMXSlider
      If DMXSlider(i)\gadget = gadget
        ProcedureReturn i
      EndIf
    Next i
  EndIf
  ProcedureReturn -1

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure SetDrawSlider_Regulatory(gadget.l)
; ROUTINE DE TRACAGE DE LA REGLE DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  Protected w.l
  Protected h.l
  Protected tmpa.l
  Protected tmpb.l
  Protected tmpc.l
  Protected state.l
  Protected pasa.f
  Protected pasb.f
  Protected pasc.f
  Protected mula.f
  Protected mulb.f
  Protected mulc.f
  Protected Dim Couleur(7)

  If i > -1
    If DMXSlider(i)\lImage_01 <> 0
      FreeImage(DMXSlider(i)\lImage_01)
    EndIf
    DMXSlider(i)\lImage_01 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\h)
    If DMXSlider(i)\lImage_01 <> 0
      If StartDrawing(ImageOutput(DMXSlider(i)\lImage_01))
        Couleur(0) = ColorSubstitute(#DMXSlider_Color_01, $000000)
        Couleur(1) = ColorSubstitute(#DMXSlider_Color_02, $000000)
        Couleur(2) = ColorSubstitute(#DMXSlider_Color_03, $000000)
        If DMXSlider(i)\backcolor = -1
          Couleur(3) = ColorSubstitute(#DMXSlider_Color_04, $000000)
        Else
          Couleur(3) = DMXSlider(i)\backcolor
        EndIf
        Couleur(4) = ColorSubstitute(#DMXSlider_Color_05, $000000)
        Couleur(5) = ColorSubstitute(#DMXSlider_Color_06, $000000)
        Couleur(6) = ColorSubstitute(#DMXSlider_Color_07, $000000)
        Couleur(7) = ColorSubstitute(#DMXSlider_Color_08, $000000)
        w = DMXSlider(i)\w
        h = DMXSlider(i)\h
        tmpa = w / 2
        tmpc = ((w + (w / 10)) / 2) - 1
        Box(0, 0, w, h, Couleur(3))
        Box(tmpa - 2, tmpc, 4, h - (tmpc * 2),      Couleur(2))
        LineXY(tmpa - 2, tmpc, tmpa - 2, h - tmpc,  Couleur(0))
        LineXY(tmpa - 2, tmpc, tmpa + 1, tmpc,      Couleur(0))
        LineXY(tmpa + 2, tmpc, tmpa + 2, h - tmpc,  Couleur(1))
        LineXY(tmpa - 1, h - tmpc, tmpa+2, h-tmpc,  Couleur(1))
        tmpb = DMXSlider(i)\max - DMXSlider(i)\min
        pasa = (h - (tmpc * 2)) / tmpb
        For i=0 To h - (tmpc * 2)
          LineXY(0, tmpc + i,   tmpa - 4, tmpc + i,       Couleur(2))
          LineXY(0, tmpc + i + 1, tmpa - 4, tmpc + i + 1, Couleur(7))
          LineXY(tmpa+4, tmpc + i,   w, tmpc + i,         Couleur(2))
          LineXY(tmpa+4, tmpc + i + 1, w, tmpc + i + 1,   Couleur(7))
          i + (pasa * 10)
        Next i
        StopDrawing()
      EndIf
    EndIf
  EndIf

EndProcedure

Procedure SetDrawSlider_Button(gadget.l)
; ROUTINE DE TRACAGE DU BOUTON DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  Protected w.l
  Protected tmpa.l
  Protected tmpb.l
  Protected tmpc.l
  Protected pasa.f
  Protected pasb.f
  Protected pasc.f
  Protected mula.f
  Protected mulb.f
  Protected mulc.f
  Protected Dim Couleur(7)

  If i > -1
    If DMXSlider(i)\lImage_02 <> 0
      FreeImage(DMXSlider(i)\lImage_02)
    EndIf
    w     = DMXSlider(i)\w
    tmpa  =  w / 10
    DMXSlider(i)\hb = w + tmpa
    DMXSlider(i)\lImage_02 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\w + tmpa)
    If DMXSlider(i)\lImage_02 <> 0
      If StartDrawing(ImageOutput(DMXSlider(i)\lImage_02))
        If DMXSlider(i)\disable = 1
          Couleur(0) = ColorSubstitute(#DMXSlider_Color_01, #DMX_Color_White)
          Couleur(1) = ColorSubstitute(#DMXSlider_Color_02, #DMX_Color_White)
          Couleur(2) = ColorSubstitute(#DMXSlider_Color_03, #DMX_Color_White)
          Couleur(3) = ColorSubstitute(#DMXSlider_Color_04, #DMX_Color_White)
          Couleur(4) = ColorSubstitute(#DMXSlider_Color_05, #DMX_Color_White)
          Couleur(5) = ColorSubstitute(#DMXSlider_Color_06, #DMX_Color_White)
          Couleur(6) = ColorSubstitute(#DMXSlider_Color_07, #DMX_Color_White)
          Couleur(7) = ColorSubstitute(#DMXSlider_Color_08, #DMX_Color_White)
        Else
          If DMXSlider(i)\forecolor = -1
            Couleur(0) = #DMXSlider_Color_01
            Couleur(1) = #DMXSlider_Color_02
            Couleur(2) = #DMXSlider_Color_03
            Couleur(3) = #DMXSlider_Color_04
            Couleur(4) = #DMXSlider_Color_05
            Couleur(5) = #DMXSlider_Color_06
            Couleur(6) = #DMXSlider_Color_07
            Couleur(7) = #DMXSlider_Color_08
          Else
            Couleur(0) = ColorSubstitute(#DMXSlider_Color_01, DMXSlider(i)\forecolor)
            Couleur(1) = ColorSubstitute(#DMXSlider_Color_02, DMXSlider(i)\forecolor)
            Couleur(2) = ColorSubstitute(#DMXSlider_Color_03, DMXSlider(i)\forecolor)
            Couleur(3) = ColorSubstitute(#DMXSlider_Color_04, DMXSlider(i)\forecolor)
            Couleur(4) = ColorSubstitute(#DMXSlider_Color_05, DMXSlider(i)\forecolor)
            Couleur(5) = ColorSubstitute(#DMXSlider_Color_06, DMXSlider(i)\forecolor)
            Couleur(6) = ColorSubstitute(#DMXSlider_Color_07, DMXSlider(i)\forecolor)
            Couleur(7) = ColorSubstitute(#DMXSlider_Color_08, DMXSlider(i)\forecolor)
          EndIf
        EndIf
        Box(0, 0, w,     w + tmpa,     Couleur(0))
        Box(1, 1, w - 2, w + tmpa - 2, Couleur(6))
        Box(2, 2, w - 4, w + tmpa - 4, Couleur(2))
        tmpb = (DMXSlider(i)\w / 6) - 1
        pasa = (Red(Couleur(0))   - Red(Couleur(4)))   / tmpb : mula = Red(Couleur(0))
        pasb = (Green(Couleur(0)) - Green(Couleur(4))) / tmpb : mulb = Green(Couleur(0))
        pasc = (Blue(Couleur(0))  - Blue(Couleur(4)))  / tmpb : mulc = Blue(Couleur(0))
        For i = 1 To tmpb Step 1
          mula = mula - pasa
          mulb = mulb - pasb
          mulc = mulc - pasc
          LineXY(1, i, w - 2, i, RGB(mula, mulb, mulc))
          LineXY(1, (w + tmpa - 1) - i, w - 2, (w + tmpa - 1) - i, RGB(mula, mulb, mulc))
        Next i
        LineXY(1, tmpb + 1, w - 2, tmpb + 1, Couleur(5))
        LineXY(1, (w + tmpa) - tmpb - 2, w - 2, (w + tmpa) - tmpb - 2, Couleur(5))
        LineXY(1, ((w + tmpa) / 2),   w - 2, ((w + tmpa) / 2),   Couleur(1))
        LineXY(1, ((w + tmpa) / 2) - 1, w - 2, ((w + tmpa) / 2) - 1, Couleur(0))
        tmpc = ((w+tmpa)/2) - (tmpb * 2)
        mula = Red(Couleur(1))
        mulb = Green(Couleur(1))
        mulc = Blue(Couleur(1))
        pasa = (Red(Couleur(2))   - Red(Couleur(1)))   / tmpc
        pasb = (Green(Couleur(2)) - Green(Couleur(1))) / tmpc
        pasc = (Blue(Couleur(2))  - Blue(Couleur(1)))  / tmpc
        For i = 1 To tmpc Step 1
          mula = mula + pasa
          mulb = mulb + pasb
          mulc = mulc + pasc
          LineXY(3, tmpb + 1 + i, w - 4, tmpb + 1 + i,   RGB(mula, mulb, mulc))
          LineXY(3, (w + tmpa) - tmpb - 2 - i, w - 4, (w + tmpa) - tmpb - 2 - i, RGB(mula, mulb, mulc))
        Next i
        StopDrawing()
      EndIf
    EndIf
  EndIf

EndProcedure

Procedure DMXSliderGadget_Draw(gadget.l)
; ROUTINE DE TRACAGE DU DMX SILDER COMPLET.
  Protected i.l   = SetFindDMXGadget(gadget)

  If StartDrawing(CanvasOutput(DMXSlider(i)\lCanva_01))
    If DMXSlider(i)\lImage_01 <> 0
      DrawAlphaImage(ImageID(DMXSlider(i)\lImage_01), 0, 0)
    EndIf
    If DMXSlider(i)\lImage_02 <> 0
      DrawImage(ImageID(DMXSlider(i)\lImage_02), 0, DMXSlider(i)\state)
    EndIf
    StopDrawing()
  EndIf

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure DMXSliderGadget(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default)
;
; ROUTINE DE GETION DES BOUTONS.
  Protected i.l
  Protected j.l
  Protected tmps.l
  Protected gnew.b = #False
  
  ;
  ; ROUTINE DE VERIFICATION DU NUMERO DU GADGET.
  ;
  If gadget = #PB_Any
  EndIf
  For i=1 To numDMXSlider
    If DMXSlider(i)\gadget = gadget
      j = i
      gnew = #True
    EndIf
  Next i
  If gnew = #False
    numDMXSlider + 1
    j = numDMXSlider
    ReDim DMXSlider.DMXSlider(numDMXSlider)
  EndIf

  ;
  ; ROUTINE DE VERIFICATION DES VALEURS.
  ;
  If value < 0
    value = 0
  EndIf
  If value > max
    value = max
  EndIf
  tmps = w + (w / 10)

  ;
  ; ROUTINE D'ENREGISTREMENT DES INFORMATIONS.
  ;
  DMXSlider(j)\gadget     = gadget
  DMXSlider(j)\x          = x
  DMXSlider(j)\y          = y
  DMXSlider(j)\w          = w
  DMXSlider(j)\h          = h
  DMXSlider(j)\pas        = (max - min) / (h - tmps)
  DMXSlider(j)\min        = min
  DMXSlider(j)\max        = max
  DMXSlider(j)\WheelZoom  = #DMX_Zoom_x1
  DMXSlider(j)\state      = (-value + (DMXSlider(j)\max - DMXSlider(j)\min)) / DMXSlider(j)\pas
  DMXSlider(j)\value      = value + min
  DMXSlider(j)\forecolor  = color
  DMXSlider(j)\backcolor  = -1  
  DMXSlider(j)\disable    = 0
  
  ;
  ; ROUTINE DE TACAGE DU DMX SLIDER GADGET.
  ;
  If DMXSlider(i)\lCanva_01 <> 0
    FreeGadget(DMXSlider(i)\lCanva_01)  
  EndIf
  DMXSlider(i)\lCanva_01 = CanvasGadget(#PB_Any, DMXSlider(i)\x, DMXSlider(i)\y, DMXSlider(i)\w, DMXSlider(i)\h, #PB_Canvas_Keyboard)
  SetDrawSlider_Button(DMXSlider(j)\gadget)
  SetDrawSlider_Regulatory(DMXSlider(j)\gadget)
  DMXSliderGadget_Draw(DMXSlider(j)\gadget)

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure.l DMXGadget_Event(event.l, evenp.l, eveng.l)
;
  Protected i.l
  Protected lMosY.l

  If event = #PB_Event_Gadget
    For i=1 To numDMXSlider
      If eveng = DMXSlider(i)\lCanva_01
        If DMXSlider(i)\disable = 0
          If evenp = #PB_EventType_MouseWheel
            DMXSlider(i)\value + (GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_WheelDelta) * DMXSlider(i)\WheelZoom) * DMXSlider(i)\pas
            If DMXSlider(i)\value < DMXSlider(i)\min
              DMXSlider(i)\value = DMXSlider(i)\min
            ElseIf DMXSlider(i)\value > DMXSlider(i)\max
              DMXSlider(i)\value = DMXSlider(i)\max
            EndIf
            If DMXSlider(i)\min = 0
              DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
            Else
              DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
            EndIf
            DMXSliderGadget_Draw(DMXSlider(i)\gadget)
            ProcedureReturn DMXSlider(i)\gadget
          EndIf
          If evenp = #PB_EventType_LeftButtonDown Or (evenp = #PB_EventType_MouseMove And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
            lMosY = GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_MouseY) - (DMXSlider(i)\hb / 2)
            If lMosY < 0
              lMosY = 0
            EndIf
            If DMXSlider(i)\value <> DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - (lMosY * DMXSlider(i)\pas)
              If lMosY <= DMXSlider(i)\h - DMXSlider(i)\hb
                DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - (lMosY * DMXSlider(i)\pas)
              Else
                DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - ((DMXSlider(i)\h - DMXSlider(i)\hb) * DMXSlider(i)\pas)
              EndIf
              If lMosY > (DMXSlider(i)\h - (DMXSlider(i)\hb))
                lMosY = DMXSlider(i)\h - DMXSlider(i)\hb
              EndIf
              DMXSlider(i)\state = lMosY
              DMXSliderGadget_Draw(DMXSlider(i)\gadget)
              ProcedureReturn DMXSlider(i)\gadget
            EndIf
          EndIf
        EndIf
      EndIf
    Next i
  EndIf
  ProcedureReturn -1

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure WheelZoomDMXGadget(gadget.l, zoom.l = 0)
; ROUTINE DE CHANGEMENT DU PAS DE LA MOLETTE SOURIS.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select zoom
      Case 0
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
      Case 1
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x2
      Case 2
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x4
      Case 3
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x8
      Case 4
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x16
      Case 5
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x32
      Default
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
    EndSelect
  EndIf
  
EndProcedure

Procedure.l GetDMXGadgetState(gadget.l)
; ROUTINE DE RECUPERATION DU LA VALEUR DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    ProcedureReturn DMXSlider(i)\value
  EndIf

EndProcedure

Procedure.l SetDMXGadgetState(gadget.l, value.l)
; ROUTINE DE CHANGEMENT DE LA VALEUR DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    If value < DMXSlider(i)\min
      value = DMXSlider(i)\min
    ElseIf value > DMXSlider(i)\max
      value = DMXSlider(i)\max
    EndIf
    DMXSlider(i)\value = value
    If DMXSlider(i)\min = 0
      DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
    Else
      DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
    EndIf
    DMXSliderGadget_Draw(gadget)
  EndIf

EndProcedure

Procedure.l GetDMXGadgetColor(gadget.l, colortype.l)
; ROUTINE DE RECUPERATION DES COULEURS DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select colortype
      Case #PB_Gadget_FrontColor
      Case #PB_Gadget_BackColor
    EndSelect
  EndIf

EndProcedure

Procedure.l SetDMXGadgetColor(gadget.l, colortype.l, color.l)
; ROUTINE DE CHANGEMENT DES COULEURS DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select colortype
      Case #PB_Gadget_FrontColor
        DMXSlider(i)\forecolor = color
        SetDrawSlider_Button(gadget)
        DMXSliderGadget_Draw(gadget)
      Case #PB_Gadget_BackColor
        DMXSlider(i)\backcolor = color
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
    EndSelect
  EndIf

EndProcedure

Procedure DisableDMXGadget(gadget.l, etat.l)
; ROUTINE D'ACTIVATION/DESACTIVATION DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    If DMXSlider(i)\disable <> etat
      DMXSlider(i)\disable = etat
      SetDrawSlider_Button(gadget)
      SetDrawSlider_Regulatory(gadget)
      DMXSliderGadget_Draw(gadget)
    EndIf
  EndIf

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Define i.l
Define j.l = 1
Define event.l
Define evenp.l
Define eveng.l
Define dmxev.l

Define hWnd.l = OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
If hWnd <> 0
  SmartWindowRefresh(0, 1)
  DMXSliderGadget(0, 10,  20, 44, 256, 0, 10, 285, #DMX_Color_Gray)
  DMXSliderGadget(1, 58,  20, 44, 256, 0, 11, 255, #DMX_Color_Red)
  DMXSliderGadget(2, 106, 20, 44, 256, 0, 0, 255, #DMX_Color_Green)
  DMXSliderGadget(3, 154, 20, 44, 256, 0, 0, 255, #DMX_Color_Blue)
  DMXSliderGadget(4, 250, 20, 44, 256, 0, 0, 255, #DMX_Color_Default)
  DMXSliderGadget(5, 298, 20, 44, 256, 0, 0, 255, #DMX_Color_Purple)
  DMXSliderGadget(6, 346, 20, 44, 512, 0, 100, 255, #DMX_Color_Yellow)
  DMXSliderGadget(7, 394, 20, 88, 512, 127, 0, 255, #DMX_Color_Default)

  WheelZoomDMXGadget(0, 5)
  WheelZoomDMXGadget(7, 3)
  SetDMXGadgetState(1, 300)
  SetDMXGadgetState(4, 100)
  SetDMXGadgetColor(4, #PB_Gadget_BackColor, $0000FF)
  SetDMXGadgetColor(4, #PB_Gadget_FrontColor, #DMX_Color_Cyan)
  SetDMXGadgetColor(5, #PB_Gadget_BackColor, $00FF00)
  SetDMXGadgetColor(6, #PB_Gadget_BackColor, $FF0000)

  ButtonGadget(0, 500, 5, 80, 40, "Disabled")
  TextGadget(1, 10, 5, 44, 12,  Str(GetDMXGadgetState(0)), #PB_Text_Center)
  TextGadget(2, 58, 5, 44, 12,  Str(GetDMXGadgetState(1)), #PB_Text_Center)
  TextGadget(3, 106, 5, 44, 12, Str(GetDMXGadgetState(2)), #PB_Text_Center)
  TextGadget(4, 154, 5, 44, 12, Str(GetDMXGadgetState(3)), #PB_Text_Center)
  TextGadget(5, 250, 5, 44, 12, Str(GetDMXGadgetState(4)), #PB_Text_Center)
  TextGadget(6, 298, 5, 44, 12, Str(GetDMXGadgetState(5)), #PB_Text_Center)
  TextGadget(7, 346, 5, 44, 12, Str(GetDMXGadgetState(6)), #PB_Text_Center)
  TextGadget(8, 394, 5, 88, 12, Str(GetDMXGadgetState(7)), #PB_Text_Center)

  Repeat
    event = WaitWindowEvent(20)
    evenp = EventType()
    eveng = EventGadget()
    
    dmxev = DMXGadget_Event(event, evenp, eveng)
    Select dmxev
      Case 0
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 1
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 2
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 3
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 4
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 5
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 6
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 7
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
    EndSelect
    
    If event = #PB_Event_Gadget
      If eveng = 0
        If i = 0
          i = 1
          SetGadgetText(0, "enabled")
        Else
          i = 0
          SetGadgetText(0, "Disabled")
        EndIf
        DisableDMXGadget(0, i)
        DisableDMXGadget(1, i)
        DisableDMXGadget(2, i)
        DisableDMXGadget(3, i)
        DisableDMXGadget(4, i)
        DisableDMXGadget(5, i)
        DisableDMXGadget(6, i)
        DisableDMXGadget(7, i)
      EndIf
    EndIf  
  Until event = #PB_Event_CloseWindow
EndIf
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par graph100 »

@GallyHC : j'ai ajouté ton DMXSlider dans mon projet CustomGadget.
pour le moment je ne l'ai pas mis en ligne car il y a toujours le pb du potar jaune ;) et comme j'ai plus ou moins repris ton code, bah, j'ai pas encore corrigé le soucis.
Ce que je vois pour le moment c'est que ca viens de la formule pour calculer le state et la value (dans ton code).
ya un problème avec le minimum.

ensuite j'ai un autre soucis dans mon code, c'est que j'ai du mettre le pas en type : double pour pas avoir des divisions par 0, et apparemment lorsque la hauteur est trop petite, j'ai un nombre de barre de regulatory tres tres important -_-

Je te montre ça demain ;), là je pars pour aller au ski demain ^^ ++
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par GallyHC »

graph100> pas de problème que tu l'ajoutes a CustomGadget :) par contre j'ai ajoute pas mal de chose comme de freeDMXGadget(), SetDMXGadgetAttribute, GetDMXGadgetAttribute ect...

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par graph100 »

et hop un dernier avant que je parte ;:) : oui, mais ca c'est déja géré dans l'environnement que j'avais programmé, donc déja pris en charge par mon code ^^ (voir mon mp)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par MLD »

@ GallyHC et graph100

Votre travail est superbe. :lol:
Pour la réalisation d'une console son ou table de mixage il ne manque plus que la réalisation d'un
Vu-métre en bargraph. :oops: Allez courage pour la suite. :lol: :lol:
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par GallyHC »

Bonjour tous

MLD> pour le vumètre, cela n'est pas dans mon projet mais je pourrais essayer de voir pour en faire un pourquoi pas. Par contre merci de ton soutien.

J’aime bien essayé de faire des trucs un peu design et surtout modulable facilement. Et le partage apporte beaucoup sur l’évolution d’une routine :).

Sachant que j’utilise par exemple pour le changement de couleur une routine de « Le Soldat Inconnu », que je remercie d’ailleurs une nouvelle fois au passage, car sa routine me permet de faire de bonne chose.

J’espere en le mettant ici qu’un jour cela serve a quelqu’un, même si je dois encore travaille sur l’optimisation du code :)

cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par GallyHC »

Une question a tous que je me pose.

Si le adget est desactive, d'apres vousd cela empeche ou pas de pouvoir changer les valeurs en programmation et que le slider prend en compte les valeurs?

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par MLD »

Bonjour Gally

Pour le slider je ne sais pas, mais pour d'autres gadgets oui, même l'orsque tu les mets " Hide ".
Mais tout dépend de ce que tu entend par désactivé :!:
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par GallyHC »

bonjour MLD,

HEU en Hide tu ne vois plus le gadget quel qu'il soit ? je disais plutot le mode enabled à 0 ou 1, la question est même si le gadget est désactiver est ce que cela empeche ou pas de pouvoir changer la valeur en code. perso j'ai ma reponse pour mon code mais je pose plutot la question en general pour que tout le monde puisse l'utilise facilement et surtout qu'il fontionne d'une méthode simple et correcte.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par graph100 »

Pour les gadgets PB, il est possible de modifier la valeur ou bien le texte des gadgets lorsqu'ils sont désactivés.
Si tu veux faire un truc qui a un fonctionnement proche, garde ça ;) en plus c'est assez logique ! le but de la désactivation est d’empêché l'utilisateur de faire une action à un moment, mais le prog lui, fait ce que le programmeur lui demande.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par GallyHC »

c'est bien ce que je pense mais cela fait que confirme.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par GallyHC »

Bonjour,

Encore un peu plus avancer enfin pas mal d'ailleur :)

Code : Tout sélectionner

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- INITIALISATION DES DIRECTIVES COMPILEUR.

DisableASM
EnableExplicit

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

;{ - STRUCTURE
Structure DMXSlider
  gadget.l
  x.l
  y.l
  w.l
  h.l
  hb.l
  pas.d
  min.l
  max.l
  blockmin.l
  blockmax.l
  state.l
  value.l
  WheelZoom.l
  forecolor.l
  backcolor.l
  endbcolor.l
  regulatory.l
  disable.b
  actived.b
  lImage_01.l
  lImage_02.l
  lCanva_01.l
EndStructure
;}
;{ - CONSTANTES GLOBALS
Global numDMXSlider.l = 0
Global Dim DMXSlider.DMXSlider(numDMXSlider)
Global FontID1 = LoadFont(#PB_Any, "Century Gothic", 9, #PB_Font_HighQuality | #PB_Font_Bold)
;}
;{ - CONSTANTE
#DMXSlider_Color_01       = $8E6235
#DMXSlider_Color_02       = $E9D6C2
#DMXSlider_Color_03       = $D5B08C
#DMXSlider_Color_04       = $F9F3ED
#DMXSlider_Color_05       = $B88957
#DMXSlider_Color_06       = $DCBD9E
#DMXSlider_Color_07       = $E6D0B9
#DMXSlider_Color_08       = $E9D6C2
#DMX_Color_Default        = -1
#DMX_Color_White          = $FFFFFF
#DMX_Color_Gray           = $000000
#DMX_Color_Red            = $0000FF
#DMX_Color_Green          = $00FF00
#DMX_Color_Blue           = $FF0000
#DMX_Color_Cyan           = $FFFF00
#DMX_Color_Purple         = $FF00FF
#DMX_Color_Yellow         = $00FFFF
#DMX_Zoom_x1              = 1
#DMX_Zoom_x2              = 2
#DMX_Zoom_x4              = 4
#DMX_Zoom_x8              = 8
#DMX_Zoom_x16             = 16
#DMX_Zoom_x32             = 32
#DMX_Block_Minimum        = 0
#DMX_Block_Maximum        = 1
#DMX_Regulatory_Off       = 0
#DMX_Regulatory_On        = 1
#DMX_Regulatory_progress  = 2
;}

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Declare.l SetColorSubstitute(color.l, finalcolor.l)
Declare.l SetFindDMXGadget(gadget.l)
Declare SetDrawSlider_Regulatory(gadget.l)
Declare SetDrawSlider_Button(gadget.l)
Declare DMXSliderGadget_Draw(gadget.l)
Declare DMXSliderGadget(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default)
Declare.l DMXGadget_Event(event.l, evenp.l, eveng.l)
Declare WheelZoomDMXGadget(gadget.l, zoom.l = 0)
Declare.l GetDMXGadgetState(gadget.l)
Declare SetDMXGadgetState(gadget.l, value.l)
Declare.l GetDMXGadgetColor(gadget.l, colortype.l)
Declare SetDMXGadgetColor(gadget.l, colortype.l, color.l)
Declare DisableDMXGadget(gadget.l, etat.l)
Declare HideDMXGadget(gadget.l, etat.l)
Declare.l GetDMXGadgetAttribute(gadget.l, attribut.l)
Declare SetDMXGadgetAttribute(gadget.l, attribut.l, value.l)

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- INFORMATION SUR LES FENETRES WINDOWS.

Procedure GetWindowBackgroundColor()
; ROUTINE DE RECHERCHE DE LA COULEUR de FOND.
  ProcedureReturn GetSysColor_(#COLOR_3DFACE)

EndProcedure

Procedure GetElementBackgroundColor()
; ROUTINE DE RECHERCHE DE LA COULEUR de FOND.
  ProcedureReturn GetSysColor_(#COLOR_BTNFACE)

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- ROUTINE DE MOFIFICATION DES COULEURS.
Procedure.l SetColorSubstitute(color.l, finalcolor.l)
; ROUTINE DE CHANGEMENT DES TEINTES DE COULEUR  
  Protected lTempsA.f
  Protected lTempsB.f
  Protected lColorR.l
  Protected lColorG.l
  Protected lColorB.l
  Protected lColorA.l
  Protected lShadeB.l
  Protected lShadeN.l

  lColorR = Red(color)
  lColorG = Green(color)
  lColorB = Blue(color)
  lColorA = Alpha(color)
  If     lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
    lTempsA = 255 / lColorB
    lShadeN = 255 - lColorB
    lColorB = 255
    lColorG = lTempsA * lColorG
    lColorR = lTempsA * lColorR
  ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
    lTempsA = 255 / lColorG
    lShadeN = 255 - lColorG
    lColorB = lTempsA * lColorB
    lColorG = 255
    lColorR = lTempsA * lColorR
  ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
    lTempsA = 255 / lColorR
    lShadeN = 255 - lColorR
    lColorB = lTempsA * lColorB
    lColorG = lTempsA * lColorG
    lColorR = 255
  Else
    lShadeN = 255
    lColorB = 255
    lColorG = 255
    lColorR = 255
  EndIf
  If     lColorB < lColorG And lColorB < lColorR
    lShadeB = 255 - lColorB
  ElseIf lColorG < lColorB And lColorG < lColorR
    lShadeB = 255 - lColorG
  ElseIf lColorR < lColorB And lColorR < lColorG
    lShadeB = 255 - lColorR
  Else
    lShadeB = 255
  EndIf  
  lColorR = Red(finalcolor)
  lColorG = Green(finalcolor)
  lColorB = Blue(finalcolor)
  If     lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
    lTempsA = 255 / lColorB
    lColorB = 255
    lColorG = lTempsA * lColorG
    lColorR = lTempsA * lColorR
  ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
    lTempsA = 255 / lColorG
    lColorB = lTempsA * lColorB
    lColorG = 255
    lColorR = lTempsA * lColorR
  ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
    lTempsA = 255 / lColorR
    lColorB = lTempsA * lColorB
    lColorG = lTempsA * lColorG
    lColorR = 255
  EndIf
  If      lColorB < lColorG And lColorB < lColorR
    lTempsA = 1 - lColorB / 255
    lColorG = (lColorG - lColorB) / lTempsA
    lColorR = (lColorR - lColorB) / lTempsA
    lColorB = 0
  ElseIf lColorG < lColorB And lColorG < lColorR
    lTempsA = 1 - lColorG / 255
    lColorB = (lColorB - lColorG) / lTempsA
    lColorR = (lColorR - lColorG) / lTempsA
    lColorG = 0
  ElseIf lColorR < lColorB And lColorR < lColorG
    lTempsA = 1 - lColorR / 255
    lColorB = (lColorB - lColorR) / lTempsA
    lColorG = (lColorG - lColorR) / lTempsA
    lColorR = 0
  EndIf
  lTempsA = 1 - lShadeB / 255
  lTempsB = (255 - lShadeN) / 255
  lColorR = (lColorR + (255 - lColorR) * lTempsA) * lTempsB
  If lColorR < 0
    lColorR = 0
  ElseIf lColorR > 255
    lColorR = 255
  EndIf
  lColorG = (lColorG + (255 - lColorG) * lTempsA) * lTempsB
  If lColorG < 0
    lColorG = 0
  ElseIf lColorG > 255
    lColorG = 255
  EndIf
  lColorB = (lColorB + (255 - lColorB) * lTempsA) * lTempsB
  If lColorB < 0
    lColorB = 0
  ElseIf lColorB > 255
    lColorB = 255
  EndIf
  ProcedureReturn (lColorR | lColorG << 8 | lColorB << 16 | lColorA << 24)
  
EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;-ROUTINE DE RECHERCHE DU DMX SLIDER.
Procedure.l SetFindDMXGadget(gadget.l)
; ROUTINE DE RECHERCHE DU GADGET DMX SLIDER.
  Define i.l

  If numDMXSlider > 0
    For i=1 To numDMXSlider
      If DMXSlider(i)\gadget = gadget
        ProcedureReturn i
      EndIf
    Next i
  EndIf
  ProcedureReturn -1

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- ROUTINE D'AFFICHAGE DES DMX SLIDER.

Procedure SetDrawSlider_Regulatory(gadget.l)
; ROUTINE DE TRACAGE DE LA REGLE DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  Protected w.l
  Protected h.l
  Protected tmpa.l
  Protected tmpb.l
  Protected tmpc.l
  Protected state.l
  Protected pasa.f
  Protected pasb.f
  Protected pasc.f
  Protected mula.f
  Protected mulb.f
  Protected mulc.f
  Protected Dim Couleur(7)

  If i > -1
    If DMXSlider(i)\lImage_01 <> 0
      FreeImage(DMXSlider(i)\lImage_01)
    EndIf
    DMXSlider(i)\lImage_01 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\h)
    If DMXSlider(i)\lImage_01 <> 0
      If StartDrawing(ImageOutput(DMXSlider(i)\lImage_01))
        Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, $000000)
        Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, $000000)
        Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, $000000)
        If DMXSlider(i)\backcolor = -1
          Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, $000000)
        Else
          Couleur(3) = DMXSlider(i)\backcolor
        EndIf
        Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, $000000)
        Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, $000000)
        Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, $000000)
        Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, $000000)
        w = DMXSlider(i)\w
        h = DMXSlider(i)\h
        tmpa = w / 2
        tmpc = ((w + (w / 10)) / 2) - 1
        Box(0, 0, w, h, Couleur(3))
        Box(tmpa - 2, tmpc, 4, h - (tmpc * 2),      Couleur(2))
        LineXY(tmpa - 2, tmpc, tmpa - 2, h - tmpc,  Couleur(0))
        LineXY(tmpa - 2, tmpc, tmpa + 1, tmpc,      Couleur(0))
        LineXY(tmpa + 2, tmpc, tmpa + 2, h - tmpc,  Couleur(1))
        LineXY(tmpa - 1, h - tmpc, tmpa+2, h-tmpc,  Couleur(1))
        Select DMXSlider(i)\regulatory
          Case #DMX_Regulatory_On
            tmpb = DMXSlider(i)\max - DMXSlider(i)\min
            pasa = (h - (tmpc * 2)) / tmpb
            For i=0 To h - (tmpc * 2)
              LineXY(0, tmpc + i,   tmpa - 4, tmpc + i,       Couleur(0))
              LineXY(0, tmpc + i + 1, tmpa - 4, tmpc + i + 1, Couleur(7))
              LineXY(tmpa + 4, tmpc + i,   w, tmpc + i,       Couleur(0))
              LineXY(tmpa + 4, tmpc + i + 1, w, tmpc + i + 1, Couleur(7))
              i + (pasa * 10)
            Next i
          Case #DMX_Regulatory_progress
            tmpb = DMXSlider(i)\max - DMXSlider(i)\min
            pasa = (h - (tmpc * 2)) / tmpb
            For i=0 To h - (tmpc * 2)
              LineXY(0, tmpc + i,   tmpa - 4, tmpc + i,       Couleur(0))
              LineXY(0, tmpc + i + 1, tmpa - 4, tmpc + i + 1, Couleur(7))
              mula + mulc 
              i + (pasa * 10)
            Next i
            ;LineXY(0, tmpc,   tmpa - 4, tmpc,                 Couleur(7))
            ;LineXY(tmpa - 4, tmpc, tmpa - 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
            ;LineXY(0, tmpc, tmpa - 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
            ;FillArea(tmpa - 5, tmpc + 1, Couleur(7), Couleur(7))
            LineXY(tmpa + 4, tmpc,   w, tmpc,               Couleur(7))
            LineXY(tmpa + 4, tmpc, tmpa + 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
            LineXY(w - 1, tmpc, tmpa + 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
            FillArea(tmpa + 5, tmpc + 1, Couleur(7), Couleur(7))
        EndSelect
        StopDrawing()
      EndIf
    EndIf
  EndIf

EndProcedure

Procedure SetDrawSlider_Button(gadget.l)
; ROUTINE DE TRACAGE DU BOUTON DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  Protected w.l
  Protected tmpa.l
  Protected tmpb.l
  Protected tmpc.l
  Protected pasa.f
  Protected pasb.f
  Protected pasc.f
  Protected mula.f
  Protected mulb.f
  Protected mulc.f
  Protected Dim Couleur(7)

  If i > -1
    If DMXSlider(i)\lImage_02 <> 0
      FreeImage(DMXSlider(i)\lImage_02)
    EndIf
    w     = DMXSlider(i)\w
    tmpa  =  w / 10
    DMXSlider(i)\hb = w + tmpa
    DMXSlider(i)\lImage_02 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\w + tmpa)
    If DMXSlider(i)\lImage_02 <> 0
      If StartDrawing(ImageOutput(DMXSlider(i)\lImage_02))
        If DMXSlider(i)\disable = 1
          Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, #DMX_Color_White)
          Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, #DMX_Color_White)
          Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, #DMX_Color_White)
          Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, #DMX_Color_White)
          Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, #DMX_Color_White)
          Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, #DMX_Color_White)
          Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, #DMX_Color_White)
          Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, #DMX_Color_White)
        Else
          If DMXSlider(i)\forecolor = -1
            Couleur(0) = #DMXSlider_Color_01
            Couleur(1) = #DMXSlider_Color_02
            Couleur(2) = #DMXSlider_Color_03
            Couleur(3) = #DMXSlider_Color_04
            Couleur(4) = #DMXSlider_Color_05
            Couleur(5) = #DMXSlider_Color_06
            Couleur(6) = #DMXSlider_Color_07
            Couleur(7) = #DMXSlider_Color_08
          Else
            Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, DMXSlider(i)\forecolor)
            Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, DMXSlider(i)\forecolor)
            Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, DMXSlider(i)\forecolor)
            Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, DMXSlider(i)\forecolor)
            Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, DMXSlider(i)\forecolor)
            Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, DMXSlider(i)\forecolor)
            Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, DMXSlider(i)\forecolor)
            Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, DMXSlider(i)\forecolor)
          EndIf
        EndIf
        Box(0, 0, w,     w + tmpa,     Couleur(0))
        Box(1, 1, w - 2, w + tmpa - 2, Couleur(6))
        Box(2, 2, w - 4, w + tmpa - 4, Couleur(2))
        tmpb = (DMXSlider(i)\w / 6) - 1
        pasa = (Red(Couleur(0))   - Red(Couleur(4)))   / tmpb : mula = Red(Couleur(0))
        pasb = (Green(Couleur(0)) - Green(Couleur(4))) / tmpb : mulb = Green(Couleur(0))
        pasc = (Blue(Couleur(0))  - Blue(Couleur(4)))  / tmpb : mulc = Blue(Couleur(0))
        For i = 1 To tmpb Step 1
          mula = mula - pasa
          mulb = mulb - pasb
          mulc = mulc - pasc
          LineXY(1, i, w - 2, i, RGB(mula, mulb, mulc))
          LineXY(1, (w + tmpa - 1) - i, w - 2, (w + tmpa - 1) - i, RGB(mula, mulb, mulc))
        Next i
        LineXY(1, tmpb + 1, w - 2, tmpb + 1, Couleur(5))
        LineXY(1, (w + tmpa) - tmpb - 2, w - 2, (w + tmpa) - tmpb - 2, Couleur(5))
        tmpc = ((w+tmpa)/2) - (tmpb * 2)
        mula = Red(Couleur(1))
        mulb = Green(Couleur(1))
        mulc = Blue(Couleur(1))
        pasa = (Red(Couleur(2))   - Red(Couleur(1)))   / tmpc
        pasb = (Green(Couleur(2)) - Green(Couleur(1))) / tmpc
        pasc = (Blue(Couleur(2))  - Blue(Couleur(1)))  / tmpc
        For i = 1 To tmpc Step 1
          mula = mula + pasa
          mulb = mulb + pasb
          mulc = mulc + pasc
          LineXY(3, tmpb + 1 + i, w - 4, tmpb + 1 + i,   RGB(mula, mulb, mulc))
          LineXY(3, (w + tmpa) - tmpb - 2 - i, w - 4, (w + tmpa) - tmpb - 2 - i, RGB(mula, mulb, mulc))
        Next i
        LineXY(1, ((w + tmpa) / 2),   w - 2, ((w + tmpa) / 2),   Couleur(1))
        LineXY(1, ((w + tmpa) / 2) - 1, w - 2, ((w + tmpa) / 2) - 1, Couleur(0))
        StopDrawing()
      EndIf
    EndIf
  EndIf

EndProcedure

Procedure DMXSliderGadget_Draw(gadget.l)
; ROUTINE DE TRACAGE DU DMX SILDER COMPLET.
  Protected i.l   = SetFindDMXGadget(gadget)

  If DMXSlider(i)\actived = #True And DMXSlider(i)\lCanva_01 <> 0
    If StartDrawing(CanvasOutput(DMXSlider(i)\lCanva_01))
      If DMXSlider(i)\lImage_01 <> 0
        DrawAlphaImage(ImageID(DMXSlider(i)\lImage_01), 0, 0)
      EndIf
      If DMXSlider(i)\lImage_02 <> 0
        DrawImage(ImageID(DMXSlider(i)\lImage_02), 0, DMXSlider(i)\state)
      EndIf
      StopDrawing()
    EndIf
  EndIf

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure DMXSliderGadget(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default)
;
; ROUTINE DE GETION DES BOUTONS.
  Protected i.l
  Protected j.l
  Protected tmps.l
  Protected gnew.b = #False
  
  ;
  ; ROUTINE DE VERIFICATION DU NUMERO DU GADGET.
  ;
  If gadget = #PB_Any
  EndIf
  For i=1 To numDMXSlider
    If DMXSlider(i)\gadget = gadget
      j = i
      gnew = #True
    EndIf
  Next i
  If gnew = #False
    numDMXSlider + 1
    j = numDMXSlider
    ReDim DMXSlider.DMXSlider(numDMXSlider)
  EndIf

  ;
  ; ROUTINE DE VERIFICATION DES VALEURS.
  ;
  If w < 15
    w = 15
  EndIf
  If h < 30
    h = 30
  EndIf
  If value < 0
    value = 0
  EndIf
  If value > max
    value = max
  EndIf
  tmps = w + (w / 10)

  ;
  ; ROUTINE D'ENREGISTREMENT DES INFORMATIONS.
  ;
  DMXSlider(j)\gadget     = gadget
  DMXSlider(j)\x          = x
  DMXSlider(j)\y          = y
  DMXSlider(j)\w          = w
  DMXSlider(j)\h          = h
  DMXSlider(j)\pas        = (max - min) / (h - tmps)
  DMXSlider(j)\min        = min
  DMXSlider(j)\max        = max
  DMXSlider(j)\WheelZoom  = #DMX_Zoom_x1
  DMXSlider(j)\state      = (-value + (DMXSlider(j)\max - DMXSlider(j)\min)) / DMXSlider(j)\pas
  DMXSlider(j)\value      = value + min
  DMXSlider(j)\forecolor  = color
  DMXSlider(j)\backcolor  = GetWindowBackgroundColor()
  DMXSlider(j)\disable    = 0
  DMXSlider(j)\regulatory = #DMX_Regulatory_On
  DMXSlider(j)\actived    = #True
  ;
  ; ROUTINE DE TACAGE DU DMX SLIDER GADGET.
  ;
  If DMXSlider(i)\lCanva_01 <> 0
    FreeGadget(DMXSlider(i)\lCanva_01)  
  EndIf
  DMXSlider(i)\lCanva_01 = CanvasGadget(#PB_Any, DMXSlider(i)\x, DMXSlider(i)\y, DMXSlider(i)\w, DMXSlider(i)\h, #PB_Canvas_Keyboard)
  SetDrawSlider_Button(DMXSlider(j)\gadget)
  SetDrawSlider_Regulatory(DMXSlider(j)\gadget)
  DMXSliderGadget_Draw(DMXSlider(j)\gadget)

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure.l DMXGadget_Event(event.l, evenp.l, eveng.l)
;
  Protected i.l
  Protected lMosY.l

  If event = #PB_Event_Gadget
    For i=1 To numDMXSlider
      If eveng = DMXSlider(i)\lCanva_01
        If DMXSlider(i)\disable = 0 Or DMXSlider(i)\actived = #False
          If evenp = #PB_EventType_MouseWheel
            DMXSlider(i)\value + (GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_WheelDelta) * DMXSlider(i)\WheelZoom) * DMXSlider(i)\pas
            If DMXSlider(i)\value < DMXSlider(i)\min
              DMXSlider(i)\value = DMXSlider(i)\min
            ElseIf DMXSlider(i)\value > DMXSlider(i)\max
              DMXSlider(i)\value = DMXSlider(i)\max
            EndIf
            If DMXSlider(i)\min = 0
              DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
            Else
              DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
            EndIf
            DMXSliderGadget_Draw(DMXSlider(i)\gadget)
            ProcedureReturn DMXSlider(i)\gadget
          EndIf
          If evenp = #PB_EventType_LeftButtonDown Or (evenp = #PB_EventType_MouseMove And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
            lMosY = GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_MouseY) - (DMXSlider(i)\hb / 2)
            If lMosY < 0
              lMosY = 0
            EndIf
            If lMosY <= DMXSlider(i)\h - DMXSlider(i)\hb
              DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - (lMosY * DMXSlider(i)\pas)
            Else
              DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - ((DMXSlider(i)\h - DMXSlider(i)\hb) * DMXSlider(i)\pas)
            EndIf
            If lMosY > (DMXSlider(i)\h - (DMXSlider(i)\hb))
              lMosY = DMXSlider(i)\h - DMXSlider(i)\hb
            EndIf
            DMXSlider(i)\state = lMosY
            DMXSliderGadget_Draw(DMXSlider(i)\gadget)
            ProcedureReturn DMXSlider(i)\gadget
          EndIf
        EndIf
      EndIf
    Next i
  EndIf
  ProcedureReturn -1

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- PROPRIETE DU GAGDET DMX SLIDER.

Procedure WheelZoomDMXGadget(gadget.l, zoom.l = 0)
; ROUTINE DE CHANGEMENT DU PAS DE LA MOLETTE SOURIS.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select zoom
      Case 0
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
      Case 1
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x2
      Case 2
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x4
      Case 3
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x8
      Case 4
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x16
      Case 5
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x32
      Default
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
    EndSelect
  EndIf

EndProcedure

Procedure.l GetDMXGadgetState(gadget.l)
; ROUTINE DE RECUPERATION DU LA VALEUR DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    ProcedureReturn DMXSlider(i)\value
  EndIf

EndProcedure

Procedure SetDMXGadgetState(gadget.l, value.l)
; ROUTINE DE CHANGEMENT DE LA VALEUR DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    If value < DMXSlider(i)\min
      value = DMXSlider(i)\min
    ElseIf value > DMXSlider(i)\max
      value = DMXSlider(i)\max
    EndIf
    DMXSlider(i)\value = value
    If DMXSlider(i)\min = 0
      DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
    Else
      DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
    EndIf
    DMXSliderGadget_Draw(gadget)
  EndIf

EndProcedure

Procedure.l GetDMXGadgetColor(gadget.l, colortype.l)
; ROUTINE DE RECUPERATION DES COULEURS DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select colortype
      Case #PB_Gadget_FrontColor
        ProcedureReturn DMXSlider(i)\forecolor
      Case #PB_Gadget_BackColor
        ProcedureReturn DMXSlider(i)\backcolor
    EndSelect
  EndIf

EndProcedure

Procedure SetDMXGadgetColor(gadget.l, colortype.l, color.l)
; ROUTINE DE CHANGEMENT DES COULEURS DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select colortype
      Case #PB_Gadget_FrontColor
        DMXSlider(i)\forecolor = color
        SetDrawSlider_Button(gadget)
        DMXSliderGadget_Draw(gadget)
      Case #PB_Gadget_BackColor
        DMXSlider(i)\backcolor = color
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
    EndSelect
  EndIf

EndProcedure

Procedure DisableDMXGadget(gadget.l, etat.l)
; ROUTINE D'ACTIVATION/DESACTIVATION DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    If DMXSlider(i)\disable <> etat
      DMXSlider(i)\disable = etat
      SetDrawSlider_Button(gadget)
      SetDrawSlider_Regulatory(gadget)
      DMXSliderGadget_Draw(gadget)
    EndIf
  EndIf

EndProcedure

Procedure HideDMXGadget(gadget.l, etat.l)
; ROUTINE DE SUPPRESSION DU GADGET SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)

  If i > -1
    Select etat
      Case 0
        HideGadget(DMXSlider(i)\lCanva_01, 0)
      Case 1
        HideGadget(DMXSlider(i)\lCanva_01, 1)
    EndSelect
  EndIf
  
EndProcedure
  
Procedure FreeDMXGadget(gadget.l)
; ROUTINE DE SUPPRESSION DU GADGET SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    DMXSlider(i)\actived = #False
    If DMXSlider(i)\lImage_01 <> 0
      FreeImage(DMXSlider(i)\lImage_01)
    EndIf
    If DMXSlider(i)\lImage_02 <> 0
      FreeImage(DMXSlider(i)\lImage_02)
    EndIf
    If DMXSlider(i)\lCanva_01 <> 0
      FreeGadget(DMXSlider(i)\lCanva_01)
    EndIf 
  EndIf

EndProcedure

Procedure.l GetDMXGadgetAttribute(gadget.l, attribut.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select attribut
      Case #PB_ScrollBar_Minimum
        ProcedureReturn DMXSlider(i)\min
      Case #PB_ScrollBar_Maximum
        ProcedureReturn DMXSlider(i)\max
    EndSelect
  EndIf

EndProcedure

Procedure SetDMXGadgetAttribute(gadget.l, attribut.l, value.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)
  Protected tmps.l
  Protected tmpv.l

  If i > -1
    Select attribut
      Case #PB_ScrollBar_Minimum
        If value > DMXSlider(i)\max
          value = DMXSlider(i)\max
        EndIf
        tmpv = DMXSlider(i)\value
        If tmpv < value
          tmpv = value
        EndIf
        If tmpv > DMXSlider(i)\max
          tmpv = DMXSlider(i)\max
        EndIf
        tmps = DMXSlider(i)\w + (DMXSlider(i)\w / 10)
        DMXSlider(i)\min    = value
        DMXSlider(i)\pas    = (DMXSlider(i)\max - DMXSlider(i)\min) / (DMXSlider(i)\h - tmps)
        DMXSlider(i)\state  = (-tmpv + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas
        DMXSlider(i)\value  = tmpv + DMXSlider(i)\min
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
      Case #PB_ScrollBar_Maximum
        If value < DMXSlider(i)\min
          value = DMXSlider(i)\min
        EndIf
        tmpv = DMXSlider(i)\value
        If tmpv < DMXSlider(i)\min
          tmpv = DMXSlider(i)\min
        EndIf
        If tmpv > value
          tmpv = value
        EndIf
        tmps = DMXSlider(i)\w + (DMXSlider(i)\w / 10)
        DMXSlider(i)\max    = value
        DMXSlider(i)\pas    = (DMXSlider(i)\max - DMXSlider(i)\min) / (DMXSlider(i)\h - tmps)
        DMXSlider(i)\state  = (-tmpv + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas
        DMXSlider(i)\value  = tmpv + DMXSlider(i)\min
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
    EndSelect
  EndIf

EndProcedure

Procedure.l GetDMXGadgetBlock(gadget.l, attribut.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)

  If i > -1
    Select attribut
      Case #DMX_Block_Minimum
        ProcedureReturn DMXSlider(i)\blockmin
      Case #DMX_Block_Maximum
        ProcedureReturn DMXSlider(i)\blockmax
    EndSelect
  EndIf

EndProcedure

Procedure.l SetDMXGadgetBlock(gadget.l, attribut.l, value.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)

  If i > -1
    Select attribut
      Case #DMX_Block_Minimum
      Case #DMX_Block_Maximum
    EndSelect
  EndIf

EndProcedure

Procedure.l GetDMXGadgetRegulatory(gadget.l, attribut.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)

  If i > -1
    Select attribut
      Case #DMX_Regulatory_Off
        ProcedureReturn #DMX_Regulatory_Off
      Case #DMX_Regulatory_On
        ProcedureReturn #DMX_Regulatory_On
      Case #DMX_Regulatory_progress
        ProcedureReturn #DMX_Regulatory_progress
    EndSelect
  EndIf

EndProcedure

Procedure.l SetDMXGadgetRegulatory(gadget.l, attribut.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)

  If i > -1
    Select attribut
      Case #DMX_Regulatory_Off
        DMXSlider(i)\regulatory = #DMX_Regulatory_Off
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
      Case #DMX_Regulatory_On
        DMXSlider(i)\regulatory = #DMX_Regulatory_On
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
      Case #DMX_Regulatory_progress
        DMXSlider(i)\regulatory = #DMX_Regulatory_progress
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
    EndSelect
  EndIf

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Define i.l
Define j.l
Define event.l
Define evenp.l
Define eveng.l
Define dmxev.l

Define hWnd.l = OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
If hWnd <> 0
  SmartWindowRefresh(0, 1)
  DMXSliderGadget(0, 10,  20, 44, 256, 0, 0, 255,   #DMX_Color_Gray)
  DMXSliderGadget(1, 58,  20, 44, 256, 0, 0, 255,   #DMX_Color_Red)
  DMXSliderGadget(2, 106, 20, 44, 256, 0, 0, 255,   #DMX_Color_Green)
  DMXSliderGadget(3, 154, 20, 44, 256, 0, 0, 255,   #DMX_Color_Blue)
  DMXSliderGadget(4, 250, 20, 44, 256, 0, 0, 255,   #DMX_Color_Default)
  DMXSliderGadget(5, 298, 20, 44, 256, 0, 0, 255,   #DMX_Color_Purple)
  DMXSliderGadget(6, 346, 20, 44, 256, 0, 100, 255, #DMX_Color_Yellow)
  DMXSliderGadget(7, 394, 20, 44, 256, 127, 0, 255, #DMX_Color_Default)

  WheelZoomDMXGadget(0, 5)
  WheelZoomDMXGadget(7, 3)
  SetDMXGadgetState(1, 300)
  SetDMXGadgetState(4, 100)
  SetDMXGadgetColor(4, #PB_Gadget_BackColor, $0000FF)
  SetDMXGadgetColor(4, #PB_Gadget_FrontColor, #DMX_Color_Cyan)
  SetDMXGadgetColor(5, #PB_Gadget_BackColor, $00FF00)
  SetDMXGadgetColor(6, #PB_Gadget_BackColor, $FF0000)
  SetDMXGadgetColor(7, #PB_Gadget_BackColor, $FF00FF)
  SetDMXGadgetAttribute(6, #PB_ScrollBar_Minimum, 0)
  
  SetDMXGadgetRegulatory(0, #DMX_Regulatory_Off)
  SetDMXGadgetRegulatory(1, #DMX_Regulatory_Off)
  SetDMXGadgetRegulatory(2, #DMX_Regulatory_On)
  SetDMXGadgetRegulatory(3, #DMX_Regulatory_On)
  SetDMXGadgetRegulatory(4, #DMX_Regulatory_progress)
  SetDMXGadgetRegulatory(5, #DMX_Regulatory_progress)
  
  ButtonGadget(0, 500, 5, 80, 40, "Disabled")
  TextGadget(1, 10, 5, 44, 12,  Str(GetDMXGadgetState(0)), #PB_Text_Center)
  TextGadget(2, 58, 5, 44, 12,  Str(GetDMXGadgetState(1)), #PB_Text_Center)
  TextGadget(3, 106, 5, 44, 12, Str(GetDMXGadgetState(2)), #PB_Text_Center)
  TextGadget(4, 154, 5, 44, 12, Str(GetDMXGadgetState(3)), #PB_Text_Center)
  TextGadget(5, 250, 5, 44, 12, Str(GetDMXGadgetState(4)), #PB_Text_Center)
  TextGadget(6, 298, 5, 44, 12, Str(GetDMXGadgetState(5)), #PB_Text_Center)
  TextGadget(7, 346, 5, 44, 12, Str(GetDMXGadgetState(6)), #PB_Text_Center)
  TextGadget(8, 394, 5, 44, 12, Str(GetDMXGadgetState(7)), #PB_Text_Center)
  ButtonGadget(9, 500, 50, 80, 40, "Hide")

  Repeat
    event = WaitWindowEvent(20)
    evenp = EventType()
    eveng = EventGadget()
    
    dmxev = DMXGadget_Event(event, evenp, eveng)
    Select dmxev
      Case 0
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 1
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 2
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 3
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 4
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 5
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 6
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 7
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
    EndSelect
    
    If event = #PB_Event_Gadget
      If eveng = 0
        If i = 0
          i = 1
          SetGadgetText(0, "enabled")
        Else
          i = 0
          SetGadgetText(0, "Disabled")
        EndIf
        DisableDMXGadget(0, i)
        DisableDMXGadget(1, i)
        DisableDMXGadget(2, i)
        DisableDMXGadget(3, i)
        DisableDMXGadget(4, i)
        DisableDMXGadget(5, i)
        DisableDMXGadget(6, i)
        DisableDMXGadget(7, i)
      EndIf
      If eveng = 9
        If j = 0
          j = 1
          SetGadgetText(9, "Show")
        Else
          j = 0
          SetGadgetText(9, "Hide")
        EndIf
        HideDMXGadget(0, j)
        HideDMXGadget(1, j)
        HideDMXGadget(2, j)
        HideDMXGadget(3, j)
        HideDMXGadget(4, j)
        HideDMXGadget(5, j)
        HideDMXGadget(6, j)
        HideDMXGadget(7, j)
      EndIf
    EndIf
  Until event = #PB_Event_CloseWindow
EndIf
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par Ar-S »

ça avance bien effectivement. par contre je préfère lorsqu'un gadget est disable que tout le bloque soit grisé. Question d'habitude.
Les couleurs des trackers piquent un peu les yeux ^^ Mais sinon ça prend bien forme.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Code du potar Slider, [Resolu] OpenWindow et molette

Message par GallyHC »

Je penses que le desabled t'ira mieu :)

Code : Tout sélectionner

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- INITIALISATION DES DIRECTIVES COMPILEUR.

DisableASM
EnableExplicit

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

;{ - STRUCTURE
Structure DMXSlider
  gadget.l
  x.l
  y.l
  w.l
  h.l
  hb.l
  pas.d
  min.l
  max.l
  blockmin.l
  blockmax.l
  state.l
  value.l
  WheelZoom.l
  forecolor.l
  backcolor.l
  endbcolor.l
  regulatory.l
  disable.b
  actived.b
  lImage_01.l
  lImage_02.l
  lCanva_01.l
EndStructure
;}
;{ - CONSTANTES GLOBALS
Global lWBackGround.l = 0
Global lEBackGround.l = 0
Global numDMXSlider.l = 0
Global Dim DMXSlider.DMXSlider(numDMXSlider)
Global FontID1 = LoadFont(#PB_Any, "Century Gothic", 9, #PB_Font_HighQuality | #PB_Font_Bold)
;}
;{ - CONSTANTE
#DMXSlider_Color_01       = $8E6235
#DMXSlider_Color_02       = $E9D6C2
#DMXSlider_Color_03       = $D5B08C
#DMXSlider_Color_04       = $F9F3ED
#DMXSlider_Color_05       = $B88957
#DMXSlider_Color_06       = $DCBD9E
#DMXSlider_Color_07       = $E6D0B9
#DMXSlider_Color_08       = $E9D6C2
#DMX_Color_Default        = -1
#DMX_Color_White          = $FFFFFF
#DMX_Color_Gray           = $000000
#DMX_Color_Red            = $0000FF
#DMX_Color_Green          = $00FF00
#DMX_Color_Blue           = $FF0000
#DMX_Color_Cyan           = $FFFF00
#DMX_Color_Purple         = $FF00FF
#DMX_Color_Yellow         = $00FFFF
#DMX_Zoom_x1              = 1
#DMX_Zoom_x2              = 2
#DMX_Zoom_x4              = 4
#DMX_Zoom_x8              = 8
#DMX_Zoom_x16             = 16
#DMX_Zoom_x32             = 32
#DMX_Block_Minimum        = 0
#DMX_Block_Maximum        = 1
#DMX_Regulatory_Off       = 0
#DMX_Regulatory_On        = 1
#DMX_Regulatory_progress  = 2
;}

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Declare.l SetColorSubstitute(color.l, finalcolor.l)
Declare.l SetFindDMXGadget(gadget.l)
Declare SetDrawSlider_Regulatory(gadget.l)
Declare SetDrawSlider_Button(gadget.l)
Declare DMXSliderGadget_Draw(gadget.l)
Declare DMXSliderGadget(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default)
Declare.l DMXGadget_Event(event.l, evenp.l, eveng.l)
Declare WheelZoomDMXGadget(gadget.l, zoom.l = 0)
Declare.l GetDMXGadgetState(gadget.l)
Declare SetDMXGadgetState(gadget.l, value.l)
Declare.l GetDMXGadgetColor(gadget.l, colortype.l)
Declare SetDMXGadgetColor(gadget.l, colortype.l, color.l)
Declare DisableDMXGadget(gadget.l, etat.l)
Declare HideDMXGadget(gadget.l, etat.l)
Declare.l GetDMXGadgetAttribute(gadget.l, attribut.l)
Declare SetDMXGadgetAttribute(gadget.l, attribut.l, value.l)

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- INFORMATION SUR LES FENETRES WINDOWS.

Procedure GetWindowBackgroundColor()
; ROUTINE DE RECHERCHE DE LA COULEUR DE FOND.
  ProcedureReturn GetSysColor_(#COLOR_3DFACE)

EndProcedure

Procedure GetElementBackgroundColor()
; ROUTINE DE RECHERCHE DE LA COULEUR DE FOND.
  ProcedureReturn GetSysColor_(#COLOR_WINDOW )

EndProcedure

lWBackGround = GetWindowBackgroundColor()
lEBackGround = GetElementBackgroundColor()

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- ROUTINE DE MOFIFICATION DES COULEURS.
Procedure.l SetColorSubstitute(color.l, finalcolor.l)
; ROUTINE DE CHANGEMENT DES TEINTES DE COULEUR  
  Protected lTempsA.f
  Protected lTempsB.f
  Protected lColorR.l
  Protected lColorG.l
  Protected lColorB.l
  Protected lColorA.l
  Protected lShadeB.l
  Protected lShadeN.l

  lColorR = Red(color)
  lColorG = Green(color)
  lColorB = Blue(color)
  lColorA = Alpha(color)
  If     lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
    lTempsA = 255 / lColorB
    lShadeN = 255 - lColorB
    lColorB = 255
    lColorG = lTempsA * lColorG
    lColorR = lTempsA * lColorR
  ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
    lTempsA = 255 / lColorG
    lShadeN = 255 - lColorG
    lColorB = lTempsA * lColorB
    lColorG = 255
    lColorR = lTempsA * lColorR
  ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
    lTempsA = 255 / lColorR
    lShadeN = 255 - lColorR
    lColorB = lTempsA * lColorB
    lColorG = lTempsA * lColorG
    lColorR = 255
  Else
    lShadeN = 255
    lColorB = 255
    lColorG = 255
    lColorR = 255
  EndIf
  If     lColorB < lColorG And lColorB < lColorR
    lShadeB = 255 - lColorB
  ElseIf lColorG < lColorB And lColorG < lColorR
    lShadeB = 255 - lColorG
  ElseIf lColorR < lColorB And lColorR < lColorG
    lShadeB = 255 - lColorR
  Else
    lShadeB = 255
  EndIf  
  lColorR = Red(finalcolor)
  lColorG = Green(finalcolor)
  lColorB = Blue(finalcolor)
  If     lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
    lTempsA = 255 / lColorB
    lColorB = 255
    lColorG = lTempsA * lColorG
    lColorR = lTempsA * lColorR
  ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
    lTempsA = 255 / lColorG
    lColorB = lTempsA * lColorB
    lColorG = 255
    lColorR = lTempsA * lColorR
  ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
    lTempsA = 255 / lColorR
    lColorB = lTempsA * lColorB
    lColorG = lTempsA * lColorG
    lColorR = 255
  EndIf
  If      lColorB < lColorG And lColorB < lColorR
    lTempsA = 1 - lColorB / 255
    lColorG = (lColorG - lColorB) / lTempsA
    lColorR = (lColorR - lColorB) / lTempsA
    lColorB = 0
  ElseIf lColorG < lColorB And lColorG < lColorR
    lTempsA = 1 - lColorG / 255
    lColorB = (lColorB - lColorG) / lTempsA
    lColorR = (lColorR - lColorG) / lTempsA
    lColorG = 0
  ElseIf lColorR < lColorB And lColorR < lColorG
    lTempsA = 1 - lColorR / 255
    lColorB = (lColorB - lColorR) / lTempsA
    lColorG = (lColorG - lColorR) / lTempsA
    lColorR = 0
  EndIf
  lTempsA = 1 - lShadeB / 255
  lTempsB = (255 - lShadeN) / 255
  lColorR = (lColorR + (255 - lColorR) * lTempsA) * lTempsB
  If lColorR < 0
    lColorR = 0
  ElseIf lColorR > 255
    lColorR = 255
  EndIf
  lColorG = (lColorG + (255 - lColorG) * lTempsA) * lTempsB
  If lColorG < 0
    lColorG = 0
  ElseIf lColorG > 255
    lColorG = 255
  EndIf
  lColorB = (lColorB + (255 - lColorB) * lTempsA) * lTempsB
  If lColorB < 0
    lColorB = 0
  ElseIf lColorB > 255
    lColorB = 255
  EndIf
  ProcedureReturn (lColorR | lColorG << 8 | lColorB << 16 | lColorA << 24)
  
EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;-ROUTINE DE RECHERCHE DU DMX SLIDER.
Procedure.l SetFindDMXGadget(gadget.l)
; ROUTINE DE RECHERCHE DU GADGET DMX SLIDER.
  Define i.l

  If numDMXSlider > 0
    For i=1 To numDMXSlider
      If DMXSlider(i)\gadget = gadget
        ProcedureReturn i
      EndIf
    Next i
  EndIf
  ProcedureReturn -1

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- ROUTINE D'AFFICHAGE DES DMX SLIDER.

Procedure SetDrawSlider_Regulatory(gadget.l)
; ROUTINE DE TRACAGE DE LA REGLE DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  Protected w.l
  Protected h.l
  Protected tmpa.l
  Protected tmpb.l
  Protected tmpc.l
  Protected state.l
  Protected pasa.f
  Protected pasb.f
  Protected pasc.f
  Protected mula.f
  Protected mulb.f
  Protected mulc.f
  Protected Dim Couleur(7)

  If i > -1
    If DMXSlider(i)\lImage_01 <> 0
      FreeImage(DMXSlider(i)\lImage_01)
    EndIf
    DMXSlider(i)\lImage_01 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\h)
    If DMXSlider(i)\lImage_01 <> 0
      If StartDrawing(ImageOutput(DMXSlider(i)\lImage_01))
        If DMXSlider(i)\disable = 1
          Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, #DMX_Color_White)
          Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, #DMX_Color_White)
          Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, #DMX_Color_White)
          If DMXSlider(i)\backcolor = -1
            Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, $000000)
          Else
            Couleur(3) = DMXSlider(i)\backcolor
          EndIf
          Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, #DMX_Color_White)
          Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, #DMX_Color_White)
          Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, #DMX_Color_White)
          Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, #DMX_Color_White)
        Else
          Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, $000000)
          Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, $000000)
          Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, $000000)
          If DMXSlider(i)\backcolor = -1
            Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, $000000)
          Else
            Couleur(3) = DMXSlider(i)\backcolor
          EndIf
          Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, $000000)
          Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, $000000)
          Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, $000000)
          Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, $000000)
        EndIf
        w = DMXSlider(i)\w
        h = DMXSlider(i)\h
        tmpa = w / 2
        tmpc = ((w + (w / 10)) / 2) - 1
        Box(0, 0, w, h, Couleur(3))
        Box(tmpa - 2, tmpc, 4, h - (tmpc * 2),      Couleur(2))
        LineXY(tmpa - 2, tmpc, tmpa - 2, h - tmpc,  Couleur(0))
        LineXY(tmpa - 2, tmpc, tmpa + 1, tmpc,      Couleur(0))
        LineXY(tmpa + 2, tmpc, tmpa + 2, h - tmpc,  Couleur(1))
        LineXY(tmpa - 1, h - tmpc, tmpa+2, h-tmpc,  Couleur(1))
        Select DMXSlider(i)\regulatory
          Case #DMX_Regulatory_On
            tmpb = DMXSlider(i)\max - DMXSlider(i)\min
            pasa = (h - (tmpc * 2)) / tmpb
            For i=0 To h - (tmpc * 2)
              LineXY(0, tmpc + i,   tmpa - 4, tmpc + i,       Couleur(0))
              LineXY(0, tmpc + i + 1, tmpa - 4, tmpc + i + 1, Couleur(7))
              LineXY(tmpa + 4, tmpc + i,   w, tmpc + i,       Couleur(0))
              LineXY(tmpa + 4, tmpc + i + 1, w, tmpc + i + 1, Couleur(7))
              i + (pasa * 10)
            Next i
          Case #DMX_Regulatory_progress
            tmpb = DMXSlider(i)\max - DMXSlider(i)\min
            pasa = (h - (tmpc * 2)) / tmpb
            For i=0 To h - (tmpc * 2)
              LineXY(0, tmpc + i,   tmpa - 4, tmpc + i,       Couleur(0))
              LineXY(0, tmpc + i + 1, tmpa - 4, tmpc + i + 1, Couleur(7))
              i + (pasa * 10)
            Next i
            ;LineXY(0, tmpc,   tmpa - 4, tmpc,                 Couleur(7))
            ;LineXY(tmpa - 4, tmpc, tmpa - 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
            ;LineXY(0, tmpc, tmpa - 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
            ;FillArea(tmpa - 5, tmpc + 1, Couleur(7), Couleur(7))
            LineXY(tmpa + 4, tmpc,   w, tmpc,               Couleur(2))
            LineXY(tmpa + 4, tmpc, tmpa + 4, tmpc + (h - (tmpc * 2) - 1), Couleur(2))
            LineXY(w - 1, tmpc, tmpa + 4, tmpc + (h - (tmpc * 2) - 1), Couleur(2))
            FillArea(tmpa + 5, tmpc + 1, Couleur(2), Couleur(2))
        EndSelect
        StopDrawing()
      EndIf
    EndIf
  EndIf

EndProcedure

Procedure SetDrawSlider_Button(gadget.l)
; ROUTINE DE TRACAGE DU BOUTON DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  Protected w.l
  Protected tmpa.l
  Protected tmpb.l
  Protected tmpc.l
  Protected pasa.f
  Protected pasb.f
  Protected pasc.f
  Protected mula.f
  Protected mulb.f
  Protected mulc.f
  Protected Dim Couleur(7)

  If i > -1
    If DMXSlider(i)\lImage_02 <> 0
      FreeImage(DMXSlider(i)\lImage_02)
    EndIf
    w     = DMXSlider(i)\w
    tmpa  =  w / 10
    DMXSlider(i)\hb = w + tmpa
    DMXSlider(i)\lImage_02 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\w + tmpa)
    If DMXSlider(i)\lImage_02 <> 0
      If StartDrawing(ImageOutput(DMXSlider(i)\lImage_02))
        If DMXSlider(i)\disable = 1
          Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, #DMX_Color_White)
          Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, #DMX_Color_White)
          Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, #DMX_Color_White)
          Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, #DMX_Color_White)
          Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, #DMX_Color_White)
          Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, #DMX_Color_White)
          Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, #DMX_Color_White)
          Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, #DMX_Color_White)
        Else
          If DMXSlider(i)\forecolor = -1
            Couleur(0) = #DMXSlider_Color_01
            Couleur(1) = #DMXSlider_Color_02
            Couleur(2) = #DMXSlider_Color_03
            Couleur(3) = #DMXSlider_Color_04
            Couleur(4) = #DMXSlider_Color_05
            Couleur(5) = #DMXSlider_Color_06
            Couleur(6) = #DMXSlider_Color_07
            Couleur(7) = #DMXSlider_Color_08
          Else
            Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, DMXSlider(i)\forecolor)
            Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, DMXSlider(i)\forecolor)
            Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, DMXSlider(i)\forecolor)
            Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, DMXSlider(i)\forecolor)
            Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, DMXSlider(i)\forecolor)
            Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, DMXSlider(i)\forecolor)
            Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, DMXSlider(i)\forecolor)
            Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, DMXSlider(i)\forecolor)
          EndIf
        EndIf
        Box(0, 0, w,     w + tmpa,     Couleur(0))
        Box(1, 1, w - 2, w + tmpa - 2, Couleur(6))
        Box(2, 2, w - 4, w + tmpa - 4, Couleur(2))
        tmpb = (DMXSlider(i)\w / 6) - 1
        pasa = (Red(Couleur(0))   - Red(Couleur(4)))   / tmpb : mula = Red(Couleur(0))
        pasb = (Green(Couleur(0)) - Green(Couleur(4))) / tmpb : mulb = Green(Couleur(0))
        pasc = (Blue(Couleur(0))  - Blue(Couleur(4)))  / tmpb : mulc = Blue(Couleur(0))
        For i = 1 To tmpb Step 1
          mula = mula - pasa
          mulb = mulb - pasb
          mulc = mulc - pasc
          LineXY(1, i, w - 2, i, RGB(mula, mulb, mulc))
          LineXY(1, (w + tmpa - 1) - i, w - 2, (w + tmpa - 1) - i, RGB(mula, mulb, mulc))
        Next i
        LineXY(1, tmpb + 1, w - 2, tmpb + 1, Couleur(5))
        LineXY(1, (w + tmpa) - tmpb - 2, w - 2, (w + tmpa) - tmpb - 2, Couleur(5))
        tmpc = ((w+tmpa)/2) - (tmpb * 2)
        mula = Red(Couleur(1))
        mulb = Green(Couleur(1))
        mulc = Blue(Couleur(1))
        pasa = (Red(Couleur(2))   - Red(Couleur(1)))   / tmpc
        pasb = (Green(Couleur(2)) - Green(Couleur(1))) / tmpc
        pasc = (Blue(Couleur(2))  - Blue(Couleur(1)))  / tmpc
        For i = 1 To tmpc Step 1
          mula = mula + pasa
          mulb = mulb + pasb
          mulc = mulc + pasc
          LineXY(3, tmpb + 1 + i, w - 4, tmpb + 1 + i,   RGB(mula, mulb, mulc))
          LineXY(3, (w + tmpa) - tmpb - 2 - i, w - 4, (w + tmpa) - tmpb - 2 - i, RGB(mula, mulb, mulc))
        Next i
        LineXY(1, ((w + tmpa) / 2),   w - 2, ((w + tmpa) / 2),   Couleur(1))
        LineXY(1, ((w + tmpa) / 2) - 1, w - 2, ((w + tmpa) / 2) - 1, Couleur(0))
        StopDrawing()
      EndIf
    EndIf
  EndIf

EndProcedure

Procedure DMXSliderGadget_Draw(gadget.l)
; ROUTINE DE TRACAGE DU DMX SILDER COMPLET.
  Protected i.l   = SetFindDMXGadget(gadget)

  If DMXSlider(i)\actived = #True And DMXSlider(i)\lCanva_01 <> 0
    If StartDrawing(CanvasOutput(DMXSlider(i)\lCanva_01))
      If DMXSlider(i)\lImage_01 <> 0
        DrawAlphaImage(ImageID(DMXSlider(i)\lImage_01), 0, 0)
      EndIf
      If DMXSlider(i)\lImage_02 <> 0
        DrawImage(ImageID(DMXSlider(i)\lImage_02), 0, DMXSlider(i)\state)
      EndIf
      StopDrawing()
    EndIf
  EndIf

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure DMXSliderGadget(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default)
;
; ROUTINE DE GETION DES BOUTONS.
  Protected i.l
  Protected j.l
  Protected tmps.l
  Protected gnew.b = #False
  
  ;
  ; ROUTINE DE VERIFICATION DU NUMERO DU GADGET.
  ;
  If gadget = #PB_Any
  EndIf
  For i=1 To numDMXSlider
    If DMXSlider(i)\gadget = gadget
      j = i
      gnew = #True
    EndIf
  Next i
  If gnew = #False
    numDMXSlider + 1
    j = numDMXSlider
    ReDim DMXSlider.DMXSlider(numDMXSlider)
  EndIf

  ;
  ; ROUTINE DE VERIFICATION DES VALEURS.
  ;
  If w < 15
    w = 15
  EndIf
  If h < 30
    h = 30
  EndIf
  If value < 0
    value = 0
  EndIf
  If value > max
    value = max
  EndIf
  tmps = w + (w / 10)

  ;
  ; ROUTINE D'ENREGISTREMENT DES INFORMATIONS.
  ;
  DMXSlider(j)\gadget     = gadget
  DMXSlider(j)\x          = x
  DMXSlider(j)\y          = y
  DMXSlider(j)\w          = w
  DMXSlider(j)\h          = h
  DMXSlider(j)\pas        = (max - min) / (h - tmps)
  DMXSlider(j)\min        = min
  DMXSlider(j)\max        = max
  DMXSlider(j)\WheelZoom  = #DMX_Zoom_x1
  DMXSlider(j)\state      = (-value + (DMXSlider(j)\max - DMXSlider(j)\min)) / DMXSlider(j)\pas
  DMXSlider(j)\value      = value + min
  DMXSlider(j)\forecolor  = color
  DMXSlider(j)\backcolor  = lWBackGround
  DMXSlider(j)\disable    = 0
  DMXSlider(j)\regulatory = #DMX_Regulatory_On
  DMXSlider(j)\actived    = #True

  ;
  ; ROUTINE DE TACAGE DU DMX SLIDER GADGET.
  ;
  If DMXSlider(i)\lCanva_01 <> 0
    FreeGadget(DMXSlider(i)\lCanva_01)  
  EndIf
  DMXSlider(i)\lCanva_01 = CanvasGadget(#PB_Any, DMXSlider(i)\x, DMXSlider(i)\y, DMXSlider(i)\w, DMXSlider(i)\h, #PB_Canvas_Keyboard)
  SetDrawSlider_Button(DMXSlider(j)\gadget)
  SetDrawSlider_Regulatory(DMXSlider(j)\gadget)
  DMXSliderGadget_Draw(DMXSlider(j)\gadget)

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- ROUTINE DES EVENNEMENTS DU DMX SLIDER.

Procedure.l DMXGadget_Event(event.l, evenp.l, eveng.l)
;
  Protected i.l
  Protected lMosY.l

  If event = #PB_Event_Gadget
    For i=1 To numDMXSlider
      If eveng = DMXSlider(i)\lCanva_01
        If DMXSlider(i)\disable = 0 Or DMXSlider(i)\actived = #False
          If evenp = #PB_EventType_MouseWheel
            DMXSlider(i)\value + (GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_WheelDelta) * DMXSlider(i)\WheelZoom) * DMXSlider(i)\pas
            If DMXSlider(i)\value < DMXSlider(i)\min
              DMXSlider(i)\value = DMXSlider(i)\min
            ElseIf DMXSlider(i)\value > DMXSlider(i)\max
              DMXSlider(i)\value = DMXSlider(i)\max
            EndIf
            If DMXSlider(i)\min = 0
              DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
            Else
              DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
            EndIf
            DMXSliderGadget_Draw(DMXSlider(i)\gadget)
            ProcedureReturn DMXSlider(i)\gadget
          EndIf
          If evenp = #PB_EventType_LeftButtonDown Or (evenp = #PB_EventType_MouseMove And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
            lMosY = GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_MouseY) - (DMXSlider(i)\hb / 2)
            If lMosY < 0
              lMosY = 0
            EndIf
            If lMosY <= DMXSlider(i)\h - DMXSlider(i)\hb
              DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - (lMosY * DMXSlider(i)\pas)
            Else
              DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - ((DMXSlider(i)\h - DMXSlider(i)\hb) * DMXSlider(i)\pas)
            EndIf
            If lMosY > (DMXSlider(i)\h - (DMXSlider(i)\hb))
              lMosY = DMXSlider(i)\h - DMXSlider(i)\hb
            EndIf
            DMXSlider(i)\state = lMosY
            DMXSliderGadget_Draw(DMXSlider(i)\gadget)
            ProcedureReturn DMXSlider(i)\gadget
          EndIf
        EndIf
      EndIf
    Next i
  EndIf
  ProcedureReturn -1

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+
;- PROPRIETE DU GAGDET DMX SLIDER.

Procedure WheelZoomDMXGadget(gadget.l, zoom.l = 0)
; ROUTINE DE CHANGEMENT DU PAS DE LA MOLETTE SOURIS.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select zoom
      Case 0
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
      Case 1
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x2
      Case 2
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x4
      Case 3
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x8
      Case 4
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x16
      Case 5
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x32
      Default
        DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
    EndSelect
  EndIf

EndProcedure

Procedure.l GetDMXGadgetState(gadget.l)
; ROUTINE DE RECUPERATION DU LA VALEUR DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    ProcedureReturn DMXSlider(i)\value
  EndIf

EndProcedure

Procedure SetDMXGadgetState(gadget.l, value.l)
; ROUTINE DE CHANGEMENT DE LA VALEUR DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    If value < DMXSlider(i)\min
      value = DMXSlider(i)\min
    ElseIf value > DMXSlider(i)\max
      value = DMXSlider(i)\max
    EndIf
    DMXSlider(i)\value = value
    If DMXSlider(i)\min = 0
      DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
    Else
      DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
    EndIf
    DMXSliderGadget_Draw(gadget)
  EndIf

EndProcedure

Procedure.l GetDMXGadgetColor(gadget.l, colortype.l)
; ROUTINE DE RECUPERATION DES COULEURS DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select colortype
      Case #PB_Gadget_FrontColor
        ProcedureReturn DMXSlider(i)\forecolor
      Case #PB_Gadget_BackColor
        ProcedureReturn DMXSlider(i)\backcolor
    EndSelect
  EndIf

EndProcedure

Procedure SetDMXGadgetColor(gadget.l, colortype.l, color.l)
; ROUTINE DE CHANGEMENT DES COULEURS DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select colortype
      Case #PB_Gadget_FrontColor
        DMXSlider(i)\forecolor = color
        SetDrawSlider_Button(gadget)
        DMXSliderGadget_Draw(gadget)
      Case #PB_Gadget_BackColor
        DMXSlider(i)\backcolor = color
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
    EndSelect
  EndIf

EndProcedure

Procedure DisableDMXGadget(gadget.l, etat.l)
; ROUTINE D'ACTIVATION/DESACTIVATION DU SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    If DMXSlider(i)\disable <> etat
      DMXSlider(i)\disable = etat
      SetDrawSlider_Button(gadget)
      SetDrawSlider_Regulatory(gadget)
      DMXSliderGadget_Draw(gadget)
    EndIf
  EndIf

EndProcedure

Procedure HideDMXGadget(gadget.l, etat.l)
; ROUTINE DE SUPPRESSION DU GADGET SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)

  If i > -1
    Select etat
      Case 0
        HideGadget(DMXSlider(i)\lCanva_01, 0)
      Case 1
        HideGadget(DMXSlider(i)\lCanva_01, 1)
    EndSelect
  EndIf
  
EndProcedure
  
Procedure FreeDMXGadget(gadget.l)
; ROUTINE DE SUPPRESSION DU GADGET SLIDER.
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    DMXSlider(i)\actived = #False
    If DMXSlider(i)\lImage_01 <> 0
      FreeImage(DMXSlider(i)\lImage_01)
    EndIf
    If DMXSlider(i)\lImage_02 <> 0
      FreeImage(DMXSlider(i)\lImage_02)
    EndIf
    If DMXSlider(i)\lCanva_01 <> 0
      FreeGadget(DMXSlider(i)\lCanva_01)
    EndIf 
  EndIf

EndProcedure

Procedure.l GetDMXGadgetAttribute(gadget.l, attribut.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)
  
  If i > -1
    Select attribut
      Case #PB_ScrollBar_Minimum
        ProcedureReturn DMXSlider(i)\min
      Case #PB_ScrollBar_Maximum
        ProcedureReturn DMXSlider(i)\max
    EndSelect
  EndIf

EndProcedure

Procedure SetDMXGadgetAttribute(gadget.l, attribut.l, value.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)
  Protected tmps.l
  Protected tmpv.l

  If i > -1
    Select attribut
      Case #PB_ScrollBar_Minimum
        If value > DMXSlider(i)\max
          value = DMXSlider(i)\max
        EndIf
        tmpv = DMXSlider(i)\value
        If tmpv < value
          tmpv = value
        EndIf
        If tmpv > DMXSlider(i)\max
          tmpv = DMXSlider(i)\max
        EndIf
        tmps = DMXSlider(i)\w + (DMXSlider(i)\w / 10)
        DMXSlider(i)\min    = value
        DMXSlider(i)\pas    = (DMXSlider(i)\max - DMXSlider(i)\min) / (DMXSlider(i)\h - tmps)
        DMXSlider(i)\state  = (-tmpv + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas
        DMXSlider(i)\value  = tmpv + DMXSlider(i)\min
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
      Case #PB_ScrollBar_Maximum
        If value < DMXSlider(i)\min
          value = DMXSlider(i)\min
        EndIf
        tmpv = DMXSlider(i)\value
        If tmpv < DMXSlider(i)\min
          tmpv = DMXSlider(i)\min
        EndIf
        If tmpv > value
          tmpv = value
        EndIf
        tmps = DMXSlider(i)\w + (DMXSlider(i)\w / 10)
        DMXSlider(i)\max    = value
        DMXSlider(i)\pas    = (DMXSlider(i)\max - DMXSlider(i)\min) / (DMXSlider(i)\h - tmps)
        DMXSlider(i)\state  = (-tmpv + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas
        DMXSlider(i)\value  = tmpv + DMXSlider(i)\min
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
    EndSelect
  EndIf

EndProcedure

Procedure.l GetDMXGadgetBlock(gadget.l, attribut.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)

  If i > -1
    Select attribut
      Case #DMX_Block_Minimum
        ProcedureReturn DMXSlider(i)\blockmin
      Case #DMX_Block_Maximum
        ProcedureReturn DMXSlider(i)\blockmax
    EndSelect
  EndIf

EndProcedure

Procedure.l SetDMXGadgetBlock(gadget.l, attribut.l, value.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)

  If i > -1
    Select attribut
      Case #DMX_Block_Minimum
      Case #DMX_Block_Maximum
    EndSelect
  EndIf

EndProcedure

Procedure.l GetDMXGadgetRegulatory(gadget.l, attribut.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)

  If i > -1
    Select attribut
      Case #DMX_Regulatory_Off
        ProcedureReturn #DMX_Regulatory_Off
      Case #DMX_Regulatory_On
        ProcedureReturn #DMX_Regulatory_On
      Case #DMX_Regulatory_progress
        ProcedureReturn #DMX_Regulatory_progress
    EndSelect
  EndIf

EndProcedure

Procedure.l SetDMXGadgetRegulatory(gadget.l, attribut.l)
;
  Protected i.l   = SetFindDMXGadget(gadget)

  If i > -1
    Select attribut
      Case #DMX_Regulatory_Off
        DMXSlider(i)\regulatory = #DMX_Regulatory_Off
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
      Case #DMX_Regulatory_On
        DMXSlider(i)\regulatory = #DMX_Regulatory_On
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
      Case #DMX_Regulatory_progress
        DMXSlider(i)\regulatory = #DMX_Regulatory_progress
        SetDrawSlider_Regulatory(gadget)
        DMXSliderGadget_Draw(gadget)
    EndSelect
  EndIf

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Define i.l
Define j.l
Define event.l
Define evenp.l
Define eveng.l
Define dmxev.l

Define hWnd.l = OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
If hWnd <> 0
  SmartWindowRefresh(0, 1)
  DMXSliderGadget(0, 10,  20, 44, 256, 0, 0, 255,   #DMX_Color_Gray)
  DMXSliderGadget(1, 58,  20, 44, 256, 0, 0, 255,   #DMX_Color_Red)
  DMXSliderGadget(2, 106, 20, 44, 256, 0, 0, 255,   #DMX_Color_Green)
  DMXSliderGadget(3, 154, 20, 44, 256, 0, 0, 255,   #DMX_Color_Blue)
  DMXSliderGadget(4, 250, 20, 44, 256, 0, 0, 255,   #DMX_Color_Default)
  DMXSliderGadget(5, 298, 20, 44, 256, 0, 0, 255,   #DMX_Color_Purple)
  DMXSliderGadget(6, 346, 20, 44, 256, 0, 100, 255, #DMX_Color_Yellow)
  DMXSliderGadget(7, 394, 20, 44, 256, 127, 0, 255, #DMX_Color_Default)

  WheelZoomDMXGadget(0, 5)
  WheelZoomDMXGadget(7, 3)
  SetDMXGadgetState(1, 300)
  SetDMXGadgetState(4, 100)
  ;SetDMXGadgetColor(4, #PB_Gadget_BackColor, $0000FF)
  SetDMXGadgetColor(4, #PB_Gadget_FrontColor, #DMX_Color_Cyan)
  ;SetDMXGadgetColor(5, #PB_Gadget_BackColor, $00FF00)
  ;SetDMXGadgetColor(6, #PB_Gadget_BackColor, $FF0000)
  ;SetDMXGadgetColor(7, #PB_Gadget_BackColor, $FF00FF)
  SetDMXGadgetAttribute(6, #PB_ScrollBar_Minimum, 0)
  
  SetDMXGadgetRegulatory(0, #DMX_Regulatory_Off)
  SetDMXGadgetRegulatory(1, #DMX_Regulatory_Off)
  SetDMXGadgetRegulatory(2, #DMX_Regulatory_On)
  SetDMXGadgetRegulatory(3, #DMX_Regulatory_On)
  SetDMXGadgetRegulatory(4, #DMX_Regulatory_progress)
  SetDMXGadgetRegulatory(5, #DMX_Regulatory_progress)
  
  ButtonGadget(0, 500, 5, 80, 40, "Disabled")
  TextGadget(1, 10, 5, 44, 12,  Str(GetDMXGadgetState(0)), #PB_Text_Center)
  TextGadget(2, 58, 5, 44, 12,  Str(GetDMXGadgetState(1)), #PB_Text_Center)
  TextGadget(3, 106, 5, 44, 12, Str(GetDMXGadgetState(2)), #PB_Text_Center)
  TextGadget(4, 154, 5, 44, 12, Str(GetDMXGadgetState(3)), #PB_Text_Center)
  TextGadget(5, 250, 5, 44, 12, Str(GetDMXGadgetState(4)), #PB_Text_Center)
  TextGadget(6, 298, 5, 44, 12, Str(GetDMXGadgetState(5)), #PB_Text_Center)
  TextGadget(7, 346, 5, 44, 12, Str(GetDMXGadgetState(6)), #PB_Text_Center)
  TextGadget(8, 394, 5, 44, 12, Str(GetDMXGadgetState(7)), #PB_Text_Center)
  ButtonGadget(9, 500, 50, 80, 40, "Hide")

  Repeat
    event = WaitWindowEvent(20)
    evenp = EventType()
    eveng = EventGadget()
    
    dmxev = DMXGadget_Event(event, evenp, eveng)
    Select dmxev
      Case 0
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 1
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 2
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 3
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 4
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 5
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 6
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
      Case 7
        SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
    EndSelect
    
    If event = #PB_Event_Gadget
      If eveng = 0
        If i = 0
          i = 1
          SetGadgetText(0, "enabled")
        Else
          i = 0
          SetGadgetText(0, "Disabled")
        EndIf
        DisableDMXGadget(0, i)
        DisableDMXGadget(1, i)
        DisableDMXGadget(2, i)
        DisableDMXGadget(3, i)
        DisableDMXGadget(4, i)
        DisableDMXGadget(5, i)
        DisableDMXGadget(6, i)
        DisableDMXGadget(7, i)
      EndIf
      If eveng = 9
        If j = 0
          j = 1
          SetGadgetText(9, "Show")
        Else
          j = 0
          SetGadgetText(9, "Hide")
        EndIf
        HideDMXGadget(0, j)
        HideDMXGadget(1, j)
        HideDMXGadget(2, j)
        HideDMXGadget(3, j)
        HideDMXGadget(4, j)
        HideDMXGadget(5, j)
        HideDMXGadget(6, j)
        HideDMXGadget(7, j)
      EndIf
    EndIf
  Until event = #PB_Event_CloseWindow
EndIf
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Répondre