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 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:
