Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Códigos de color para web

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Códigos de color para web Responder citando

Estoy haciendo una aplicación que al final al pulsar un botón me genera un documento .html, el usuario ha podido definir antes algunas características del documento generado como por ejemplo el color de fondo del documento .html. El problema es el siguiente:
El usuario elige un color de fondo para el documento mediante un TColorDialog luego con la función ColorToString() paso el color obtenido a la cadena necesaria para poderla escribir en el código fuente del documento, pero ninguna vez el color que me pinta en el documento es el mismo que he elegido en el programa. Tras mirar el código fuente del documento obtenido veo que muchas veces los códigos de color escritos no corresponden con los colores web necesarios.
Creo que lo que necesito es capturar los códigos de color en un string pero que me sirva para código fuente html.
Gracias.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Puedes usar una función así por ejemplo:
Código:
String Color2Html(TColor color)
{
  COLORREF cr = ColorToRGB(color);
  return String().sprintf("#%02X%02X%02X", cr&255, cr>>8&255, cr>>16&255);
}

Lo que hace es devolver el color en formato #RrGgBb (Rojo, Verde, Azul) que te servirá para ponerlo directamente en el código html que generas.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Fantástico Leo Laughing , una vez más demuestras que eres el Rey.

Tu función ha funcionado a las mil maravillas, lo único que me tiene un poco preocupado es que no me gusta limitarme a copiar código y pegarlo en mis proyectos sin entender bien lo que hago, me gustaría que me indicaras dónde puedo incontrar información sobre estas conversiones que has hecho.
Gracias otra vez por sacarme de un apuro Wink .
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Aprovechando que _Leo aún duerme...

Acá va mi interpretación:

La String que representa el TColor es de tipo ABCDEF, mientras que en HTML sería EFCDAB, entonces, lo que necesitas es hacer ese trastrueque (¿qué tal la palabreja?). Y eso es lo que hace el código, de un modo muy eficiente, aunque no podriamos llamarlo "autoexplicado". Jé.
Volver arriba
Mensaje    Asunto: Responder citando

Ya lo ha explicado muy bien Alejandro Smile

Aquí va otro ejemplo quizás mas claro:

Código:
String Color2Html(TColor color)
{
  // Esto nos da el color en modo BBGGRR (Blue, Green, Red)
  String s = IntToHex(ColorToRGB(color), 6);
  // Aquí lo unico que hacemos es invertirlo para conseguir #RRGGBB
  //   que es como lo necesita el formato html
  return "#" + s.SubString(5,2) + s.SubString(3,2) + s.SubString(1,2);
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

OOOOOKKKKKK Very Happy Very Happy Very Happy .
Captado amigos, ahora se mas o menos lo que he hecho.
Muchas gracias.
P.D. Mallorca hierve de calor Shocked Cool Embarassed .
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Creo que me alegré antes de tiempo Sad .
Ante las últimas explicaciones recibidas y que me resultaron más claritas quise hacer otra prueba y no hay menera, me explico:

He creado un proyecto únicamente para hacer prácticas con este código, en el único formulario que hay tengo un ColorBox, un Edit y un botón.

//en un archivo de cabecera llamado kolor.h:

#include <vcl.h>

String Color2Html(TColor color);

//en el de implementación llamado kolor.cpp:

#include <vcl.h>

String Color2Html(TColor color)
{
String s = IntToHex(ColorToRGB(color), 6);
return "#" + s.SubString(5,2) + s.SubString(3,2) + s.SubString(1,2);
}

//En el Form1 he incluido el archivo de cabecera de la función:

#include "kolor.h"

//y en el Onclick del botón este código:

Edit1->Text = Color2Html(ColorBox1->Color);

/*Pues bien, sea caul sea el color seleccionado en el ColorBox1 el código que se muestra en el Edit1 siempre es el mismo Crying or Very sad :#FFFFFF

no sé dónde meto la pata*/

Gracias y perdonad mi tozudez.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Bueno, algo he averiguado Very Happy , si en lugar de coger el color de un TColorBox lo cojo de un TPanel funciona a la perfección, así que por mi no hace falta que os preocupeis más por este tema, prescindiré del ColorBox y utilizaré otros controles que me respondan mejor a las variables de color.
Saludos y gracias otra vez.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Bueno, de la mini-función no es el fallo y eso es fácilmente comprobable, para dos líneas que tiene como para que nos salga mal Wink

El fallo es que estas usando la propiedad "Color" del combo de colores y esa propiedad no es la que nos da el color que hemos seleccionado. La propiedad que nos da el color seleccionado es ..Selected, por tanto tendrías que cambiar la línea en la que asignas la salida de la función al TEdit por:

    Edit1->Text = Color2Html(ColorBox1->Selected);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Sería imposible que fallo proviniera de un trozo de código tuyo Laughing , a quedado claro que ha sido de mi ignorancia. Ahora si que ya me funciona con el ColorBox. Nunca me cansaré de visitaros.
Gracias.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.