FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour BUG TSlider ( RESUELTO )
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
BUG TSlider ( RESUELTO )
Posted: Sat Jul 18, 2015 08: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



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 (fw): Select all Collapse
#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..
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
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: BUG TSlider
Posted: 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 (fw): Select all Collapse
#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




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
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: BUG TSlider ( RESUELTO )
Posted: Sun Jul 19, 2015 06:12 PM

Victor,

gracias por compartirlo :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: BUG TSlider ( RESUELTO )
Posted: Mon Jul 20, 2015 02: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

Continue the discussion