BUG TSlider ( RESUELTO )

BUG TSlider ( RESUELTO )

Postby cuatecatl82 » Sat Jul 18, 2015 8:06 pm

Compañeros Buenas tardes:

Estoy haciendo un selector de colores RGB en base a 3 controles Slider, los cuales ya tengo casi terminado

Image

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..
Last edited by cuatecatl82 on Sun Jul 19, 2015 12:26 am, edited 1 time in total.
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: BUG TSlider

Postby cuatecatl82 » Sun Jul 19, 2015 12:26 am

Finalmente lo resolvi no me gusto como pero lo resolvi, no entiendo porque se desfaza el valor de 17 a 18, tuve que hacer unas modificaciones matemáticas para que quedara como lo necesito:

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 THUMBPOS (CambiaColor(oClr,oRGB,oSlR:nPos-18,nGVar,nBVar),oSay1:Varput(if(oSlR:nPos-18 <= 0,(0),(oSlR:nPos-18))),oSay1:Refresh()) ON CHANGE (CambiaColor(oClr,oRGB,oSlR:nPos-18,nGVar,nBVar),oSay1:Varput(if(oSlR:nPos-18 <= 0,(0),(oSlR:nPos-18))),oSay1:Refresh())
    Redefine   SLIDER    oSlG   VAR nGVar HORIZONTAL ID 102 of oDlg BOTTOM DIRECTION RANGE 000, 255 COLORS nColorTxt, nColorBkg, CLR_HGREEN UPDATE ON THUMBPOS (CambiaColor(oClr,oRGB,nRVar,oSlG:nPos-18,nBVar),oSay2:Varput(if(oSlG:nPos-18 <= 0,(0),(oSlG:nPos-18))),oSay2:Refresh()) ON CHANGE (CambiaColor(oClr,oRGB,nRVar,oSlG:nPos-18,nBVar),oSay2:Varput(if(oSlG:nPos-18 <= 0,(0),(oSlG:nPos-18))),oSay2:Refresh())
    Redefine   SLIDER    oSlB   VAR nBVar HORIZONTAL ID 103 of oDlg BOTTOM DIRECTION RANGE 000, 255 COLORS nColorTxt, nColorBkg, CLR_HBLUE  UPDATE ON THUMBPOS (CambiaColor(oClr,oRGB,nRVar,nGVar,oSlB:nPos-18),oSay3:Varput(if(oSlB:nPos-18 <= 0,(0),(oSlB:nPos-18))),oSay3:Refresh()) ON CHANGE (CambiaColor(oClr,oRGB,nRVar,nGVar,oSlB:nPos-18),oSay3:Varput(if(oSlB:nPos-18 <= 0,(0),(oSlB:nPos-18))),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)

   if nRVar <= 0
      nRVar:= 0
endif

   if nGVar <= 0
      nGVar:= 0
endif

   if nBVar <= 0
      nBVar:= 0
endif

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

 


Image

He comparado los colores que genero con un capturador y son esactos..

Por si a alguien le sirve.. Saludos.
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: BUG TSlider ( RESUELTO )

Postby Antonio Linares » Sun Jul 19, 2015 6:12 pm

Victor,

gracias por compartirlo :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41323
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: BUG TSlider ( RESUELTO )

Postby cuatecatl82 » Mon Jul 20, 2015 2:35 am

Maestro Linares: Solo para complementar la información comentar que desde recursos al cambiar el tamaño del slider hay que recalcular aritméticamente la posición del selector, desde código no he probado si también tiene este fallo, habrá que revisar dicho control ya que en el foro muy poco encontré sobre quienesnlo usan, al menos para lo que necesitaba está funcionando. Saludos
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 15 guests

cron