Estoy haciendo un selector de colores RGB en base a 3 controles Slider, los cuales ya tengo casi terminado
El problema es que no me esta calculando correctamente el metodo ON THUMBPOS la posicion correcta del control, o a menos no se si así se deba tomar, ya puedo pintar los colores, pero el fallo viene al obtener la posicion del control en base al rango establecido..
Les dejo el codigo para que puedan echarle una mirada:
- Code: Select all Expand view
- #INCLUDE "FiveWin.CH"
#INCLUDE "Slider.ch"
#INCLUDE "Colors.ch"
#Define COLOR_WINDOWFRAME 6
#Define COLOR_BTNFACE 15
static cColor
FUNCTION Main()
local oIco, oDlg, oSlR, oSlG, oSlB, oClr
local oSay1, oSay2, oSay3, oRGB, oBtn
local nColorTxt:= GetSysColor(COLOR_WINDOWFRAME)
local nColorBkg:= GetSysColor(COLOR_BTNFACE)
local nRVar:= HB_RandomInt(0,255)
local nGVar:= HB_RandomInt(0,255)
local nBVar:= HB_RandomInt(0,255)
cColor:= "RGB("+Alltrim(Str(nRVar))+","+Alltrim(Str(nGVar))+","+Alltrim(Str(nBVar))+")"
Define ICON oIco Resource "00"
Define DIALOG oDlg Resource "COLORPICK" Title "Selector y Generador de Colores" Icon oIco
Redefine SLIDER oSlR VAR nRVar HORIZONTAL ID 101 of oDlg BOTTOM DIRECTION RANGE 000, 255 COLORS nColorTxt, nColorBkg, CLR_HRED UPDATE ON CHANGE (CambiaColor(oClr,oRGB,nRVar,nGVar,nBVar),oSay1:Varput(nRVar),oSay1:Refresh()) ON THUMBPOS (CambiaColor(oClr,oRGB,oSlR:nPos,nGVar,nBVar),oSay1:Varput(oSlR:nPos),oSay1:Refresh())
Redefine SLIDER oSlG VAR nGVar HORIZONTAL ID 102 of oDlg BOTTOM DIRECTION RANGE 000, 255 COLORS nColorTxt, nColorBkg, CLR_HGREEN UPDATE ON CHANGE (CambiaColor(oClr,oRGB,nRVar,nGVar,nBVar),oSay2:Varput(nGVar),oSay2:Refresh()) ON THUMBPOS (CambiaColor(oClr,oRGB,nRVar,oSlG:nPos,nBVar),oSay2:Varput(oSlG:nPos),oSay2:Refresh())
Redefine SLIDER oSlB VAR nBVar HORIZONTAL ID 103 of oDlg BOTTOM DIRECTION RANGE 000, 255 COLORS nColorTxt, nColorBkg, CLR_HBLUE UPDATE ON CHANGE (CambiaColor(oClr,oRGB,nRVar,nGVar,nBVar),oSay3:Varput(nBVar),oSay3:Refresh()) ON THUMBPOS (CambiaColor(oClr,oRGB,nRVar,nGVar,oSlB:nPos),oSay3:Varput(oSlB:nPos),oSay3:Refresh())
Redefine SAY oClr PROMPT " " ID 300 of oDlg UPDATE
Redefine SAY oSay1 PROMPT nRVar ID 201 of oDlg UPDATE
Redefine SAY oSay2 PROMPT nGVar ID 202 of oDlg UPDATE
Redefine SAY oSay3 PROMPT nBVar ID 203 of oDlg UPDATE
Redefine SAY oRGB PROMPT cColor ID 204 of oDlg UPDATE
RedeFine BUTTONBMP oBtn RESOURCE "GUARDAR" ID 400 Of oDlg ACTION (Msginfo(cColor,"Guardando Color"))
oDlg:lHelpIcon:= .F.
oClr:SetColor(nRGB(nRVar,nGVar,nBVar), nRGB(nRVar,nGVar,nBVar))
oRGB:SetColor(nColorTxt, nColorBkg)
oSay1:SetColor(nColorTxt, nColorBkg)
oSay2:SetColor(nColorTxt, nColorBkg)
oSay3:SetColor(nColorTxt, nColorBkg)
oBtn:cTooltip:= "Guardar Color en RGB"
Activate DIALOG oDlg Centered
RETURN Nil
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
Static Function CambiaColor(oSay1,oSay2,nRVar,nGVar,nBVar)
oSay1:SetColor(nRGB(nRVar,nGVar,nBVar), nRGB(nRVar,nGVar,nBVar))
oSay1:Refresh()
oSay2:Varput("RGB("+Alltrim(Str(nRVar))+","+Alltrim(Str(nGVar))+","+Alltrim(Str(nBVar))+")")
oSay2:Refresh()
cColor:= "RGB("+Alltrim(Str(nRVar))+","+Alltrim(Str(nGVar))+","+Alltrim(Str(nBVar))+")"
Return nil
Y les dejo el enlace del exe y los fuentes para que puedan darse cuenta del problema..
http://www.mediafire.com/download/m8j282tosf4n2n8/WinColors.rar
Saludos..