Ver Mensaje Individual
  #1  
Antiguo 23-12-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
Crear un TDBChart en tiempo de ejecución

Buenas. Tengo un query que me da esta salida:

y a partir del mismo trato de montar un TDBChart. Para ello, en tiempo de ejecución, hago las asignaciones pertinentes:
Código:
Chart2->RemoveAllSeries();
Chart2->Chart3DPercent                 = 5;
Chart2->BottomAxis->Title->Caption     = "Año";
Chart2->BottomAxis->Title->Font->Style = TFontStyles() << fsBold;
Chart2->BottomAxis->Labels             = fMenu->Query->FieldByName("Fecha")->AsInteger;
Chart2->LeftAxis->Title->Caption       = "Votos";
Chart2->LeftAxis->Title->Font->Style   = TFontStyles() << fsBold;

for (nItem = 2; nItem < fMenu->Query->FieldDefs->Count; nItem ++)
{
     fMenu->Auxiliar->Close();
     fMenu->Auxiliar->ParamByName("Codigo")->AsInteger = StrToInt(StringReplace(fMenu->Query->FieldDefs->Items[nItem]->Name, "VOTOS", "", oReplace));
     fMenu->Auxiliar->Open();
     pItem = Evolucion->Items->Add();
     pItem->Caption = fMenu->Auxiliar->FieldByName("Sigla")->AsString;

     if ((cColor = (TColor)fMenu->Auxiliar->FieldByName("Color")->AsInteger) == 0)
          while (cColor > 0)
          {
               cColor = (TColor)RGB(random(255), random(255), random(255));
               if (slColor->IndexOf(cColor) == -1)
                    break;
          }
     slColor->Add(cColor);

     Chart2->AddSeries(&TLineSeries(Chart2));
     Chart2->Series[Chart2->SeriesCount() - 1]->DataSource           = fMenu->Query;
     Chart2->Series[Chart2->SeriesCount() - 1]->SeriesColor          = cColor;
     Chart2->Series[Chart2->SeriesCount() - 1]->Title                = pItem->Caption;
     Chart2->Series[Chart2->SeriesCount() - 1]->XLabelsSource        = "Fecha";
     Chart2->Series[Chart2->SeriesCount() - 1]->XValues->ValueSource = "Codigo";
     Chart2->Series[Chart2->SeriesCount() - 1]->YValues->ValueSource = fMenu->Query->FieldDefs->Items[nItem]->Name;
}
El problema viene precisamente en la definición de XValues->ValueSource. Si lo dejo omo está, con Código, al gráfica obtenida es esta:

Y al verdad no me parece una presentación muy elegante. Y si en vez de Código pongo el campo Contador o Fecha, el resultado es este:

Como veis sale vacío y no acabo de entender las razones para que haga esto. Como se ve en la leyenda de la gráfica en ambos casos está la misma información.
Responder Con Cita