Ver Mensaje Individual
  #1  
Antiguo 06-11-2019
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Reputación: 21
Angel.Matilla Va por buen camino
Definir un TChart

Buenas a todos. A partir del código encontrado aquí y otro de este foro estoy montando un TChart en base a los resultados de, por ejemplo, este Query:
Código:
SELECT B.Sigla, B.Color, C.Fecha, SUM(A.Votos) Votos
  FROM Resultados A, Partidos B, Elecciones C 
 WHERE A.CodPrv = (SELECT Literal FROM Instalacion WHERE Etiqueta = 'Provincia') 
   AND A.CodPrv = C.CodPrv AND C.Proceso = 4 AND C.Fecha BETWEEN 1993 AND 2019
   AND A.Proceso = C.Codigo 
   AND A.Mesa IN (SELECT Codigo FROM Mesas WHERE CodPrv = A.CodPrv) 
   AND B.CodPrv = A.CodPrv AND A.Partido = B.Codigo
   AND A.Partido IN (22, 4, 2, 3, 17, 16)
 GROUP BY A.Partido, B.Sigla, B.Color, C.Fecha ORDER BY A.Partido, B.Sigla, C.Fecha
Con el resultado del mismo genero esta pantalla que tiene un TListView y un TChart.

Para crear el TChart hago esto:
Código:
if (Chart1->SeriesCount() > 0)
     Chart1->RemoveAllSeries();

Chart1->Title->Font->Style = TFontStyles();
Chart1->BottomAxis->Title->Caption     = "Años";
Chart1->BottomAxis->Title->Font->Style = TFontStyles() << fsBold;
Chart1->LeftAxis->Title->Caption       = "Votos";
Chart1->LeftAxis->Title->Font->Style   = TFontStyles() << fsBold;

AnsiString cAux = "";
fMenu->Auxiliar->First();
for (; !fMenu->Auxiliar->Eof; fMenu->Auxiliar->Next())
{
     if (fMenu->Auxiliar->FieldByName("Sigla")->AsString != cAux)
     {
          cAux = fMenu->Auxiliar->FieldByName("Sigla")->AsString;
          Chart1->AddSeries(&TLineSeries(this));
     }

     Chart1->Series[Chart1->SeriesCount() - 1]->Add(fMenu->Auxiliar->FieldByName("Votos")->AsInteger, fMenu->Auxiliar->FieldByName("Fecha")->AsInteger, (TColor)fMenu->Auxiliar->FieldByName("Color")->AsInteger);
}
Pero me surgen algunos problemas:
  1. En el eje horizontal deberían mostrarse los años y en el mismo orden que se ven en el TListView, pero como veis se muestra el "orden" dentro del ListView.
  2. En la leyenda quiero mostrar la primera columna del TListView (las siglas del partido).
¿Alguna idea de como resolver estos problemas? Porque llevo un par de días dando vueltas al problema y no se me ocurre nada.
Responder Con Cita