Pues en una aplicación que hice, necesitaba generar un reporte en formato HTML, pero no encontré un componente para hacerlo, asi que la solución que encontre, fue generar el codigo HTML en un Memo, y guardarlo con extensión HTML.
La verdad fue muy buen reto hacer un codigo en C++ que generara codigo HTML, y mas por que no sabia programar en HTML, pero en la red hay tutoriales muy buenos. Y al final obtuve el resultado que esperaba.
Fue algo asi:
TStringList *ReporteHTML = new TStringList();
ReporteHTML->Clear();
//----Poner la cabecera
ReporteHTML->Append("<HEAD>");
ReporteHTML->Append("<TITLE>SÍNTESIS INFORMATIVA</TITLE>");
ReporteHTML->Append("</HEAD>");
//----Poner el cuerpo
ReporteHTML->Append("<BODY><FONT FACE= \"MS Sans Serif\"");
//Titulo
ReporteHTML->Append("<CENTER><H2>Síntesis Informativa</H2><H4>FECHA: "+FechaActual.FormatString("ddd d/mmm/yy"</H4></CENTER>");
ReporteHTML->Append("<p><A NAME =\"TopMenu\">FILTRADO POR: Medios Electrónicos</A>");
ReporteHTML->Append("<HR>");
//Enlaces a Radio
ReporteHTML->Append("Radio<UL>");
for( int i = 0; i < NombreRadio->Count; i++ )
{
AnsiString Ancla = CrearAncla(NombreRadio->Strings[i]);
AnsiString NAncla = NombreRadio->Strings[i];
ReporteHTML->Append("<LI><A HREF = #"+Ancla+">"+NAncla+" ("+IntToStr(ListaRadio[i]->Count)+")</A>");
}
ReporteHTML->Append("</UL>");
//Enlaces a Tv
ReporteHTML->Append("Tv<UL>");
for( int i = 0; i < NombreTv->Count; i++ )
{
AnsiString Ancla = CrearAncla(NombreTv->Strings[i]);
AnsiString NAncla = NombreTv->Strings[i];
ReporteHTML->Append("<LI><A HREF = #"+Ancla+">"+NAncla+" ("+IntToStr(ListaTv[i]->Count)+")</A>");
}
ReporteHTML->Append("</UL>");
//Enlaces a Internet
ReporteHTML->Append("Internet<UL>");
for( int i = 0; i < NombreInternet->Count; i++ )
{
AnsiString Ancla = CrearAncla(NombreInternet->Strings[i]);
AnsiString NAncla = NombreInternet->Strings[i];
ReporteHTML->Append("<LI><A HREF = #"+Ancla+">"+NAncla+" ("+IntToStr(ListaInternet[i]->Count)+")</A>");
}
ReporteHTML->Append("</UL>");
El codigo no esta completo, y te aseguro que si lo compilas te va agenerar un mil de errores, pero es solo para que te des una idea de lo que hize, y como fui armando poco a poco la pagina HTML con datos que tenia almacenados en archivos que puse en variables.
Al final de tu codigo, simplemente tienes que guardar el contenido del TStringList como HTML
ReporteHTML->SaveToFile("c:\\Reporte.HTML");
Te adjunto un ejemplo del reporte que se genera.
Como vez, es una opción muy engorrosa, pero si alguien mas tiene una mejor opción, tambien me interasa saberla, pues podria mejorar el aspecto de mi reporte