Angel.Matilla |
06-11-2019 17:55:34 |
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: - 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.
- 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.
|