La Web del Programador: Comunidad de Programadores
 
    Pregunta:  16816 - ASIGNAR DATOS AL OBJETO TCHART
Autor:  Demetrio Gonzalez Gonzalez
¿Cómo se asignan los datos contenidos en un StringGrid como fuente de datos para mostrar en un gráfico Chart?

  Respuesta:  Hector Andrade
Te recomiendo que coloques los datos que has de leer en un array de dos dimenciones dinamico, digamos que llamas al array datos[i,j], luego coloca un componente TChart en tu formulario, has doble click sobre el TChart y aparecera un ayudante crea una serie de datos (Series1), y selecciona el tipo de grafico que necesitas y otras carateristicas, luego en el evento que deseas que genere el grafico coloca:
For i:=0 to High(datos) do
Series1.AddXY(datos[0,i],datos[1,i],'',clTeeColor);
Chart1.Visible:=True;

Si necesitas que el componente sea interactivo y grafique distintos sets de datos no olvides limpiar la menoria del componente cada vez que generes un nuevo grafico:
Series1.Clear;

Si necesitas mas ayuda pega un grito a [email protected]
hector...

  Respuesta:  Alejandro Carrillo de Luna
Yo nunca pude llenar el Chart, pero utilizo un componente llamado TCHARTFX, que esta en Delphi 5 (no se si en Delphi menores), y me parece que es mas facil.

El llenado es a partir de una tabla, tomando en cuenta el primer campo como encabezado de la serie.

Procedure LlenaGraf(Const Grafica: TChartFx; Const Fuente: TQuery; Archivo: String);
Var
x, y: Integer;
Begin
If Fuente.Active Then
Fuente.Active := False;
Try
Fuente.DatabaseName := ExtractFilePath(Application.ExeName)+'Archivos';
Fuente.SQL.Clear;
Fuente.SQL.Add('Select Estrat, Count(*) From "' + Archivo + '" Group By Estrat');
Fuente.ExecSQL;
Fuente.Active := True;
Except
On E: EDatabaseError Do ShowMessage(E.Message);
End;
If Fuente.RecordCount > 0 Then Begin
Grafica.OpenDataEx(Cod_Values, Fuente.FieldDefs.Count - 1, Fuente.RecordCount);
Grafica.Decimals := 0;
x := 1;
y := 0;
While (Not Fuente.Eof) And (x <= Grafica.NSeries) Do Begin
Grafica.ThisSerie := x - 1;
While (Not Fuente.Eof) And (y <= Grafica.NValues-1) Do Begin
Grafica.Value[y] := Fuente.Fields[x].AsInteger;
Grafica.Legend[y] := Fuente.Fields[x-1].AsString;
Fuente.Next;
Inc(y);
End;
Inc(x);
End;
Grafica.CloseData(Cod_Values);
End
Else
ShowMessage('No existe información para graficar.'+#13+'Consulte con el Desarrollador');
Fuente.Active := False;
Fuente.DatabaseName := '';
End;