Voila la nouvelle version de mon gadget, maintenant on peu faire aussi une selection multiple des potars en appuyant sur la touche "contrôle" (Faut encore que j'ameliore) et d'autre choses

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
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 numDMXCTLSel.l = 0
Global numDMXALTSel.l = 0
Global maxDMXCTLSel.l = 1024
Global maxDMXALTSel.l = 1024
Global Dim DMXSlider.DMXSlider(numDMXSlider)
Global Dim DMXCTLSel.l(maxDMXCTLSel)
Global Dim DMXALTSel.l(maxDMXALTSel)
;}
;{ - CONSTANTE
#DMX_No_Select = -1
#DMX_Multi_Select = -2
#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 FUNCTION
Declare.l SetColorSubstitute(color.l, finalcolor.l)
Declare.l SetFindDMXGadget(gadget.l)
Declare SetDrawSlider_Regulatory(gadget.l)
Declare SetDrawSlider_Button(gadget.l)
Declare SetDrawSlider_FullDraw(gadget.l)
Declare DMXGadget_Slider(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default, backcolor.l=#DMX_Color_Default)
Declare.b DMXGadget_DeleteArray(value.l)
Declare.l DMXGadget_CountMultiSelect()
Declare.l DMXGadget_ValueMultiSelect(value.l)
Declare.b DMXGadget_IsALTSelected(gadget.l)
Declare.b DMXGadget_IsCTLSelected(gadget.l)
Declare.l DMXGadget_EventType(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)
;}
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE DE CHARGEMENT DES POLICES.
Procedure GetLenPolice(lPolice.l)
; ROUTINE DE RECHERCHE DE LA TAILLE DE LA POLICE.
Define lhDC.l = GetDC_(#Null)
Define lPpp.l = GetDeviceCaps_(lhDC, #LOGPIXELSX)
Define lres.l = ReleaseDC_(#Null, lhDC)
If lPolice < 8
Define fpas.f = (96 * 1.01) / lPpp
Else
Define fpas.f = (96 * 1.1) / lPpp
EndIf
ProcedureReturn Int(lPolice * fpas)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE DES INCLUDES DU PROGRAMME.
;{ - POLICE
Global Font_DMXSlider_ID1 = LoadFont(#PB_Any, "Century Gothic", GetLenPolice(8), #PB_Font_HighQuality | #PB_Font_Bold)
Global Font_DMXSlider_ID2 = LoadFont(#PB_Any, "Century Gothic", GetLenPolice(7), #PB_Font_HighQuality | #PB_Font_Bold)
;}
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- 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 #DMX_No_Select
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 j.l
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 > #DMX_No_Select
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, #DMX_Color_Gray)
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, #DMX_Color_Gray)
Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, #DMX_Color_Gray)
Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, #DMX_Color_Gray)
If DMXSlider(i)\backcolor = -1
Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, #DMX_Color_Gray)
Else
Couleur(3) = DMXSlider(i)\backcolor
EndIf
Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, #DMX_Color_Gray)
Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, #DMX_Color_Gray)
Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, #DMX_Color_Gray)
Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, #DMX_Color_Gray)
EndIf
w = DMXSlider(i)\w
h = DMXSlider(i)\h
tmpa = w / 2
tmpc = ((w + (w / 10)) / 2) - 1
If DMXGadget_IsCTLSelected(gadget) = #False Or DMXSlider(i)\disable = 1
Box(0, 0, w, h, Couleur(3))
Else
Box(0, 0, w, h, $0000FF)
Box(1, 1, w - 2, h - 2, Couleur(3))
EndIf
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 j=0 To h - (tmpc * 2)
LineXY(0, tmpc + j, tmpa - 4, tmpc + j, Couleur(2))
LineXY(0, tmpc + j + 1, tmpa - 4, tmpc + j + 1, Couleur(7))
LineXY(tmpa + 4, tmpc + j, w, tmpc + j, Couleur(2))
LineXY(tmpa + 4, tmpc + j + 1, w, tmpc + j + 1, Couleur(7))
j + (pasa * 10)
Next j
Case #DMX_Regulatory_progress
tmpb = DMXSlider(i)\max - DMXSlider(i)\min
pasa = (h - (tmpc * 2)) / tmpb
For j=0 To h - (tmpc * 2)
LineXY(0, tmpc + j, tmpa - 4, tmpc + j, Couleur(2))
LineXY(0, tmpc + j + 1, tmpa - 4, tmpc + j + 1, Couleur(7))
j + (pasa * 10)
Next j
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 j.l
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 > #DMX_No_Select
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 j = 1 To tmpb Step 1
mula = mula - pasa
mulb = mulb - pasb
mulc = mulc - pasc
LineXY(1, j, w - 2, j, RGB(mula, mulb, mulc))
LineXY(1, (w + tmpa - 1) - j, w - 2, (w + tmpa - 1) - j, RGB(mula, mulb, mulc))
Next j
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 j = 1 To tmpc Step 1
mula = mula + pasa
mulb = mulb + pasb
mulc = mulc + pasc
LineXY(3, tmpb + 1 + j, w - 4, tmpb + 1 + j, RGB(mula, mulb, mulc))
LineXY(3, (w + tmpa) - tmpb - 2 - j, w - 4, (w + tmpa) - tmpb - 2 - j, RGB(mula, mulb, mulc))
Next j
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 SetDrawSlider_FullDraw(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
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE DE CREATION DE LA GADGETLIST.
Procedure DMXGadget_Slider(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default, backcolor.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
If backcolor = #DMX_Color_Default
DMXSlider(j)\backcolor = lWBackGround
Else
DMXSlider(j)\backcolor = backcolor
EndIf
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 | #PB_Canvas_ClipMouse)
SetDrawSlider_Button(DMXSlider(j)\gadget)
SetDrawSlider_Regulatory(DMXSlider(j)\gadget)
SetDrawSlider_FullDraw(DMXSlider(j)\gadget)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE DE GESTION DES SELECTIONS.
Procedure.b DMXGadget_DeleteArrayALT(value.l)
; ROUTINE DE SUPPRESSION D'UNE VALEUR DANS LE TABLEAU.
Protected i.l
If value = numDMXALTSel
numDMXALTSel - 1
Else
numDMXALTSel - 1
For i=value To numDMXALTSel
DMXALTSel(i) = DMXALTSel(i + 1)
Next i
EndIf
EndProcedure
Procedure.b DMXGadget_DeleteArrayCTL(value.l)
; ROUTINE DE SUPPRESSION D'UNE VALEUR DANS LE TABLEAU.
Protected i.l
If value = numDMXCTLSel
numDMXCTLSel - 1
Else
numDMXCTLSel - 1
For i=value To numDMXCTLSel
DMXCTLSel(i) = DMXCTLSel(i + 1)
Next i
EndIf
EndProcedure
Procedure.l DMXGadget_CountMultiSelect()
; ROUTINE DU NOMBRE DE POTENTIOMETRE SELECTIONNE.
ProcedureReturn numDMXCTLSel
EndProcedure
Procedure.l DMXGadget_ValueMultiSelect(value.l)
; ROUTINE DE RECHERCHE DES POTENTIOMETRE SELECTIONNE.
If numDMXCTLSel > 0 And numDMXCTLSel >= value
ProcedureReturn DMXCTLSel(value)
EndIf
ProcedureReturn #DMX_No_Select
EndProcedure
Procedure.b DMXGadget_IsCTLSelected(gadget.l)
; ROUTINE DE RECHERCHE DE SELECTION.
Protected i.l = SetFindDMXGadget(gadget)
Protected j.l
Protected k.b = #False
If numDMXCTLSel > 0
For j=1 To numDMXCTLSel
If DMXCTLSel(j) = i
k = j
Break
EndIf
Next j
EndIf
ProcedureReturn k
EndProcedure
Procedure.b DMXGadget_IsALTSelected(gadget.l)
; ROUTINE DE RECHERCHE DE SELECTION.
Protected i.l = SetFindDMXGadget(gadget)
Protected j.l
Protected k.b = #False
If numDMXALTSel > 0
For j=1 To numDMXALTSel
If DMXALTSel(j) = i
k = j
Break
EndIf
Next j
EndIf
ProcedureReturn k
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE DES EVENNEMENTS DU DMX SLIDER.
Procedure.l DMXGadget_EventType(event.l, evenp.l, eveng.l)
;
Protected i.l
Protected j.l
Protected k.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 GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Modifiers) & #PB_Canvas_Alt And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_RightButton
k = DMXGadget_IsCTLSelected(DMXSlider(i)\gadget)
If k <> #False
DMXGadget_DeleteArrayALT(k)
SetDrawSlider_Regulatory(DMXSlider(i)\gadget)
SetDrawSlider_FullDraw(DMXSlider(i)\gadget)
EndIf
ProcedureReturn #DMX_No_Select
EndIf
If GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Modifiers) & #PB_Canvas_Alt And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton
ProcedureReturn #DMX_No_Select
EndIf
If GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Modifiers) & #PB_Canvas_Control And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_RightButton
k = DMXGadget_IsCTLSelected(DMXSlider(i)\gadget)
If k <> #False
DMXGadget_DeleteArrayCTL(k)
SetDrawSlider_Regulatory(DMXSlider(i)\gadget)
SetDrawSlider_FullDraw(DMXSlider(i)\gadget)
EndIf
ProcedureReturn #DMX_No_Select
EndIf
If GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_RightButton And numDMXCTLSel > 0
For j=1 To numDMXCTLSel
If DMXCTLSel(j) <> #DMX_No_Select
k = DMXCTLSel(j)
DMXCTLSel(j) = #DMX_No_Select
SetDrawSlider_Regulatory(k)
SetDrawSlider_FullDraw(k)
EndIf
Next j
numDMXCTLSel = 0
ProcedureReturn #DMX_No_Select
EndIf
If GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Modifiers) & #PB_Canvas_Control And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton
If DMXGadget_IsCTLSelected(DMXSlider(i)\gadget) = #False
numDMXCTLSel + 1
If numDMXCTLSel <= maxDMXCTLSel
DMXCTLSel(numDMXCTLSel) = DMXSlider(i)\gadget
If numDMXCTLSel > 1
DMXSlider(i)\value = DMXSlider(DMXCTLSel(1))\value
DMXSlider(i)\state = DMXSlider(DMXCTLSel(1))\state
EndIf
SetDrawSlider_Regulatory(DMXSlider(i)\gadget)
SetDrawSlider_FullDraw(DMXSlider(i)\gadget)
ProcedureReturn DMXSlider(i)\gadget
EndIf
EndIf
ProcedureReturn #DMX_No_Select
EndIf
If DMXGadget_IsCTLSelected(DMXSlider(i)\gadget) = #False And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton
If numDMXCTLSel > 0
For j=1 To numDMXCTLSel
If DMXCTLSel(j) <> #DMX_No_Select
k = DMXCTLSel(j)
DMXCTLSel(j) = #DMX_No_Select
SetDrawSlider_Regulatory(k)
SetDrawSlider_FullDraw(k)
EndIf
Next j
numDMXCTLSel = 0
EndIf
EndIf
If evenp = #PB_EventType_MouseWheel
DMXSlider(i)\value = 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
DMXSlider(i)\state = (DMXSlider(i)\min - DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas
SetDrawSlider_FullDraw(DMXSlider(i)\gadget)
If numDMXCTLSel > 0
For j=1 To numDMXCTLSel
If DMXCTLSel(j) <> #DMX_No_Select And DMXCTLSel(j) <> i
DMXSlider(SetFindDMXGadget(DMXCTLSel(j)))\value = DMXSlider(i)\value
DMXSlider(SetFindDMXGadget(DMXCTLSel(j)))\state = DMXSlider(i)\state
SetDrawSlider_FullDraw(DMXCTLSel(j))
EndIf
Next j
EndIf
If numDMXCTLSel = 0
ProcedureReturn DMXSlider(i)\gadget
Else
ProcedureReturn #DMX_Multi_Select
EndIf
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
SetDrawSlider_FullDraw(DMXSlider(i)\gadget)
If numDMXCTLSel > 0
For j=1 To numDMXCTLSel
If DMXCTLSel(j) <> #DMX_No_Select And DMXCTLSel(j) <> i
DMXSlider(SetFindDMXGadget(DMXCTLSel(j)))\value = DMXSlider(i)\value
DMXSlider(SetFindDMXGadget(DMXCTLSel(j)))\state = DMXSlider(i)\state
SetDrawSlider_FullDraw(DMXCTLSel(j))
EndIf
Next j
EndIf
If numDMXCTLSel = 0
ProcedureReturn DMXSlider(i)\gadget
Else
ProcedureReturn #DMX_Multi_Select
EndIf
EndIf
EndIf
EndIf
Next i
EndIf
ProcedureReturn #DMX_No_Select
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 > #DMX_No_Select
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 > #DMX_No_Select
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 > #DMX_No_Select
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
SetDrawSlider_FullDraw(gadget)
EndIf
EndProcedure
Procedure.l GetDMXGadgetColor(gadget.l, colortype.l)
; ROUTINE DE RECUPERATION DES COULEURS DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > #DMX_No_Select
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 > #DMX_No_Select
Select colortype
Case #PB_Gadget_FrontColor
DMXSlider(i)\forecolor = color
SetDrawSlider_Button(gadget)
SetDrawSlider_FullDraw(gadget)
Case #PB_Gadget_BackColor
DMXSlider(i)\backcolor = color
SetDrawSlider_Regulatory(gadget)
SetDrawSlider_FullDraw(gadget)
EndSelect
EndIf
EndProcedure
Procedure ResizeDMXGadget(gadget.l, x.l, y.l, w.l, h.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > #DMX_No_Select
If x <> #PB_Ignore Or y <> #PB_Ignore Or w <> #PB_Ignore Or h <> #PB_Ignore
If x <> #PB_Ignore
DMXSlider(i)\x = x
EndIf
If y <> #PB_Ignore
DMXSlider(i)\y = y
EndIf
If w <> #PB_Ignore
DMXSlider(i)\w = w
EndIf
If h <> #PB_Ignore
DMXSlider(i)\h = h
EndIf
;SetDrawSlider_Button(gadget)
;SetDrawSlider_Regulatory(gadget)
;SetDrawSlider_FullDraw(gadget)
ResizeGadget(DMXSlider(i)\lCanva_01, DMXSlider(i)\x, DMXSlider(i)\y, DMXSlider(i)\w, DMXSlider(i)\h)
EndIf
EndIf
EndProcedure
Procedure DisableDMXGadget(gadget.l, etat.l)
; ROUTINE D'ACTIVATION/DESACTIVATION DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > #DMX_No_Select
If DMXSlider(i)\disable <> etat
DMXSlider(i)\disable = etat
SetDrawSlider_Button(gadget)
SetDrawSlider_Regulatory(gadget)
SetDrawSlider_FullDraw(gadget)
EndIf
EndIf
EndProcedure
Procedure HideDMXGadget(gadget.l, etat.l)
; ROUTINE DE SUPPRESSION DU GADGET SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > #DMX_No_Select
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 > #DMX_No_Select
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 > #DMX_No_Select
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 > #DMX_No_Select
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)
SetDrawSlider_FullDraw(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)
SetDrawSlider_FullDraw(gadget)
EndSelect
EndIf
EndProcedure
Procedure.l GetDMXGadgetRegulatory(gadget.l, attribut.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > #DMX_No_Select
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 > #DMX_No_Select
Select attribut
Case #DMX_Regulatory_Off
DMXSlider(i)\regulatory = #DMX_Regulatory_Off
SetDrawSlider_Regulatory(gadget)
SetDrawSlider_FullDraw(gadget)
Case #DMX_Regulatory_On
DMXSlider(i)\regulatory = #DMX_Regulatory_On
SetDrawSlider_Regulatory(gadget)
SetDrawSlider_FullDraw(gadget)
Case #DMX_Regulatory_progress
DMXSlider(i)\regulatory = #DMX_Regulatory_progress
SetDrawSlider_Regulatory(gadget)
SetDrawSlider_FullDraw(gadget)
EndSelect
EndIf
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE DE TEST DU DMX SILDER.
Define i.l
Define j.l
Define k.l
Define l.l
Define event.l
Define evenp.l
Define eveng.l
Define dmxev.l
Define posNumbersSlider.l = 0
Define maxNumbersSlider.l = 512
Define maxVisibleSlider.l = 20
Global Dim tabNumbersSlider.l(maxNumbersSlider)
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)
ButtonGadget(0, 715, 10, 80, 40, "Disabled")
ButtonGadget(1, 715, 55, 80, 40, "Hide")
ContainerGadget(4, 10, 10, (maxVisibleSlider * 34) + maxVisibleSlider, 414, #PB_Container_Flat)
For k=1 To maxVisibleSlider
ImageGadget(800 + k, (10 + ((k - 1) * 34)), 10, 32, 32, 0, #PB_Image_Border)
ImageGadget(850 + k, (10 + ((k - 1) * 34)), 44, 32, 32, 0, #PB_Image_Border)
TextGadget(99 + k, (10 + ((k - 1) * 34)), 79, 32, 20, Str(GetDMXGadgetState(0)), #PB_Text_Border | #PB_Text_Center)
SetGadgetFont(99 + k, FontID(Font_DMXSlider_ID1))
SetGadgetColor(99 + k, #PB_Gadget_FrontColor, $FFFFFF)
SetGadgetColor(99 + k, #PB_Gadget_BackColor, $000000)
TextGadget(199 + k, (10 + ((k - 1) * 34)), 101, 32, 20, Str(k), #PB_Text_Border | #PB_Text_Center)
SetGadgetFont(199 + k, FontID(Font_DMXSlider_ID1))
SetGadgetColor(199 + k, #PB_Gadget_FrontColor, $000000)
SetGadgetColor(199 + k, #PB_Gadget_BackColor, $FFFFFF)
DMXGadget_Slider(k, (10 + ((k - 1) * 34)), 123, 32, 256, 0, 0, 255, #DMX_Color_Gray, $F0E0C0)
Next k
ScrollBarGadget(2, 10, 382, (maxVisibleSlider * 34) - 2, 20, 0, (maxNumbersSlider - maxVisibleSlider) + maxVisibleSlider, maxVisibleSlider)
CloseGadgetList()
SetGadgetColor(4, #PB_Gadget_LineColor, $FFFFFF)
SetGadgetColor(4, #PB_Gadget_BackColor, $F0E0C0)
j = 0
Repeat
event = WaitWindowEvent(20)
evenp = EventType()
eveng = EventGadget()
dmxev = DMXGadget_EventType(event, evenp, eveng)
Select dmxev
Case #DMX_Multi_Select
For k=1 To DMXGadget_CountMultiSelect()
SetGadgetText(99 + DMXGadget_ValueMultiSelect(k), Str(GetDMXGadgetState(DMXGadget_ValueMultiSelect(k))))
SetGadgetColor(99 + DMXGadget_ValueMultiSelect(k), #PB_Gadget_BackColor, RGB(0, 0, GetDMXGadgetState(DMXGadget_ValueMultiSelect(k))))
tabNumbersSlider(posNumbersSlider + DMXGadget_ValueMultiSelect(k)) = GetDMXGadgetState(DMXGadget_ValueMultiSelect(k))
Next k
Default
If dmxev <> -1
SetGadgetText (99 + dmxev, Str(GetDMXGadgetState(dmxev)))
SetGadgetColor(99 + dmxev, #PB_Gadget_BackColor, RGB(0, 0, GetDMXGadgetState(dmxev)))
tabNumbersSlider(posNumbersSlider + dmxev) = GetDMXGadgetState(dmxev)
EndIf
EndSelect
If event = #PB_Event_Gadget
If eveng = 0
If i = 0
i = 1
SetGadgetText(0, "Enabled")
Else
i = 0
SetGadgetText(0, "Disabled")
EndIf
For k=1 To maxVisibleSlider
DisableDMXGadget(k, i)
Next k
EndIf
If eveng = 1
If j = 0
j = 1
SetGadgetText(1, "Show")
Else
j = 0
SetGadgetText(1, "Hide")
EndIf
For k=1 To maxVisibleSlider
HideDMXGadget(k, j)
Next k
EndIf
If eveng = 2
posNumbersSlider = GetGadgetState(2)
For k=1 To maxVisibleSlider
SetGadgetText (99 + k, Str(tabNumbersSlider(posNumbersSlider + k)))
SetGadgetColor(99 + k, #PB_Gadget_BackColor, RGB(0, 0, tabNumbersSlider(posNumbersSlider + k)))
SetGadgetText(199 + k, Str(posNumbersSlider + k))
SetDMXGadgetState(k, tabNumbersSlider(posNumbersSlider + k))
Next k
EndIf
EndIf
Until event = #PB_Event_CloseWindow
EndIf
GallyHC