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

Tabla de contenidos