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:
![](https://www.aliquo.software/wp-content/uploads/2015/10/image_4021F318.png)
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
part1="0x" & Mid(HexColor,3,2)
part2="0x" & Mid(HexColor,5,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 siguiente color:
![](https://www.aliquo.software/wp-content/uploads/2012/04/image_7F189515.png)