¿En qué podemos ayudarte?
< Todos los temas
Imprimir

Convertir a color un valor hexadecimal en Crystal Report

En Crystal Reports podemos convertir un valor hexadecimal a un color, para ello crearemos dos funciones personalizadas mediante los siguientes pasos:

En el taller de fórmulas de Crystal Report se deben crear las funciones personalizadas:


Primero crearemos la función ConvertiraDecimal que nos servirá para convertir valores hexadecimales a valores, siendo el código fuente de la función:

Function ConvertirADecimal (HexToConvert as string)
    If Len(HexToConvert) > 0 Then
        Dim hexValue As String
        hexValue = Right(HexToConvert, Len(HexToConvert)-2)

        Dim hexValueLen As Number
        hexValueLen = Len(hexValue)

        Dim i As Number
        Dim decimalResult As Number
        decimalResult = 0

        For i = 0 To hexValueLen
            Select Case Mid(hexValue, i+1, 1)     
             Case "a"
              decimalResult = decimalResult+10*(16 ^ (len(hexValue)-(i+1)))
             Case "b" 
              decimalResult = decimalResult+11*(16 ^ (len(hexValue)-(i+1)))
             Case "c" 
              decimalResult = decimalResult+12*(16 ^ (len(hexValue)-(i+1)))
             Case "d" 
              decimalResult = decimalResult+13*(16 ^ (len(hexValue)-(i+1)))
             Case "e" 
              decimalResult = decimalResult+14*(16 ^ (len(hexValue)-(i+1)))
             Case "f"  
              decimalResult = decimalResult+15*(16 ^ (len(hexValue)-(i+1)))
             Case Else 
              decimalResult = decimalResult+Val(Mid (hexValue,i+1,1))*(16 ^ (len(hexValue)-(i+1)))
            End Select
       Next i  
    End If 

    ConvertirADecimal = decimalResult
End Function


Después crearemos la función ColorFromHex para convertir el valor hexadecimal en el color, estando compuesto el hexadecimal por cuatro pares de valores equivalentes a los valores de transparencia, rojo, verde y azul. El código de la siguiente función se encargará de generar el color utilizando los valores RGB y desechando el valor de transparencia:

Function ColorFromHex (HexColor as string)
     
 Dim part1 as string
 Dim part2 as string
 Dim part3 as string

 if len(HexColor)>6 then
    HexColor=Right(HexColor,6)
 end if
 
 part1="0x" & Mid(HexColor,1,2)
 part2="0x" & Mid(HexColor,3,2)
 part3="0x" & Right(HexColor,2)
 
 ColorFromHex =Color(ConvertirADecimal(Part1),ConvertirADecimal(Part2),ConvertirADecimal(Part3))

End Function


Ejemplo: Convertir a decimal  FF9ACD32

Los dos primeros dígitos se desechan y se convierte a decimal los valores 9A (rojo), CD (verde) y 32 (azul) mostrando como resultado el color:


Tabla de contenidos