Dos funciones útiles

29/09/2003 - 01:33 por Jorge Pérez | Informe spam
Dos funciones útiles para programadores Web. Le permiten convertir colores
RGB a colores HTML. La primera de ellas se adaptó de una función expuesta
por Luis María Guayán en PortalFox.

Uso:

? GetHtmlColor( ThisForm.BackColor )

Function GetHtmlColor( nColor )
**************************

Local cHTMLColor, i, cTemp

Store "" To m.cHTMLColor, m.cTemp

For i = 1 To 3

m.cTemp = DecToHex( Val( Transform( nColor % 256, "999" )))
m.nColor= Int( m.nColor / 256 )

m.cHtmlColor = m.cHtmlColor + m.cTemp

EndFor

Return "#" + m.cHtmlColor

EndFunc

Function DecToHex( nRgbPart )
**************************

Local cChar, cAdd, nResult1, nResult2

Store "" To m.cChar, m.cAdd

If m.nRgbPart < 16

If m.nRgbPart > 9
m.cChar = Chr( 65 + ( m.nRgbPart - 10))
Else
m.cChar = Alltrim( Transform( m.nRgbPart ))
EndIf

Else

Do While .T.

m.cAdd = ""
m.nResult1 = Mod( m.nRgbPart, 16 )
m.nResult2 = Int( m.nRgbPart / 16 )
m.nRgbPart = m.nRgbPart - ( m.nResult2 * 16 )

If m.nResult2 > 9
m.cAdd = Chr( 65 + ( m.nResult2 - 10 ))
Else
m.cAdd = Alltrim( Transform( m.nResult2 ))
EndIf

m.cChar = m.cAdd + m.cChar

If m.nResult1 < 16

If m.nResult1 > 9
m.cAdd = Chr( 65 + ( m.nResult1 - 10 ))
Else
m.cAdd = Alltrim( Transform( m.nResult1 ))
EndIf

m.cChar = m.cChar + m.cAdd

Exit

EndIf

EndDo

EndIf

Return m.cChar

EndFunc

Cordial saludo,
Jorge Pérez

Preguntas similare

Leer las respuestas

#1 Luis María Guayán
29/09/2003 - 02:35 | Informe spam
Una función similar (y de menos líneas) esta en PortalFox:

Convertir el número de color a un formato válido para HTML
Enviado por: Luis María Guayán
http://www.portalfox.com/article.php?sidS4

También Jorge Mota publicó en PortalFox una función partiendo de la anterior:

Conocer el Codigo RGB y Hexadecimal de un color (de algun punto de la pantalla)
Enviado por: Jorge_Mota
http://www.portalfox.com/article.php?sidv9


Luis María Guayán
Tucumán, Argentina
__________________
SysOp de PortalFox
www.PortalFox.com
Microsoft VFP MVP
__________________


"Jorge Pérez" escribió en el mensaje
news:
Dos funciones útiles para programadores Web. Le permiten convertir colores
RGB a colores HTML. La primera de ellas se adaptó de una función expuesta
por Luis María Guayán en PortalFox.

Uso:

? GetHtmlColor( ThisForm.BackColor )

Function GetHtmlColor( nColor )
**************************

Local cHTMLColor, i, cTemp

Store "" To m.cHTMLColor, m.cTemp

For i = 1 To 3

m.cTemp = DecToHex( Val( Transform( nColor % 256, "999" )))
m.nColor= Int( m.nColor / 256 )

m.cHtmlColor = m.cHtmlColor + m.cTemp

EndFor

Return "#" + m.cHtmlColor

EndFunc

Function DecToHex( nRgbPart )
**************************

Local cChar, cAdd, nResult1, nResult2

Store "" To m.cChar, m.cAdd

If m.nRgbPart < 16

If m.nRgbPart > 9
m.cChar = Chr( 65 + ( m.nRgbPart - 10))
Else
m.cChar = Alltrim( Transform( m.nRgbPart ))
EndIf

Else

Do While .T.

m.cAdd = ""
m.nResult1 = Mod( m.nRgbPart, 16 )
m.nResult2 = Int( m.nRgbPart / 16 )
m.nRgbPart = m.nRgbPart - ( m.nResult2 * 16 )

If m.nResult2 > 9
m.cAdd = Chr( 65 + ( m.nResult2 - 10 ))
Else
m.cAdd = Alltrim( Transform( m.nResult2 ))
EndIf

m.cChar = m.cAdd + m.cChar

If m.nResult1 < 16

If m.nResult1 > 9
m.cAdd = Chr( 65 + ( m.nResult1 - 10 ))
Else
m.cAdd = Alltrim( Transform( m.nResult1 ))
EndIf

m.cChar = m.cChar + m.cAdd

Exit

EndIf

EndDo

EndIf

Return m.cChar

EndFunc

Cordial saludo,
Jorge Pérez



Respuesta Responder a este mensaje
#2 Jorge Pérez
29/09/2003 - 12:31 | Informe spam
Muchas gracias por tu amistoso y maduro comentario. Ahora hay tres
versiones. Que bueno ah?

Cordial saludo,

Jorge Pérez
Respuesta Responder a este mensaje
#3 Jorge Pérez
29/09/2003 - 16:42 | Informe spam
Mas sencillo desde VFP:

lnHtmlColor = "#" + Right( Transfrom( ThisForm.BackColor, "@0" ), 6 )

Saludos,

Jorge Pérez
Respuesta Responder a este mensaje
#4 Luis María Guayán
29/09/2003 - 17:11 | Informe spam
Si bien te retorna un formato HTML válido, no es el color seleccionado, esta
en forma inversa.

Por ejemplo en el siguiente código selecciono el ROJO y lo convierto con
ambos métodos (el codigo enviado y con la función de PortalFox):

ln = GETCOLOR() && Selecciono el ROJO

? "#" + Right(TRANSFORM( ln, "@0" ), 6 )
-> "#0000FF" && AZUL en HTML

? _Col2HTML(ln)
-> "#FF0000" && ROJO en HTML

*
FUNCTION _Col2HTML(tnColor)
*
* Pasa un número de color a un formato
* válido para HTML
* USO: _Col2HTML(12632256)
* RETORNA: Caracter - "#RRGGBB"
*
LOCAL lcHTML, ln
lcHTML = "#"
FOR ln = 1 TO 3
lcHTML = lcHTML + RIGHT(TRANS(tnColor%256,"@0"),2)
tnColor = INT(tnColor/256)
ENDFOR
RETURN lcHTML
ENDFUNC
*

Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"Jorge Pérez" escribió en el mensaje
news:
Mas sencillo desde VFP:

lnHtmlColor = "#" + Right( Transfrom( ThisForm.BackColor, "@0" ), 6 )

Saludos,

Jorge Pérez


Respuesta Responder a este mensaje
#5 Jorge Pérez
29/09/2003 - 19:20 | Informe spam
Tienes toda la razón, ya me di cuenta.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida