Difference between revisions of "TAChart Runtime FAQ"

From Free Pascal wiki
Jump to navigationJump to search
(→‎Series: Iterate through all series)
(→‎Series: Delete a series at runtime)
Line 43: Line 43:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
=== How to delete/hide a series at runtime? ===
 +
* If you don't need the series any more just destroy it: <code>series.Free</code>.
 +
* If you want to keept it for other usage, for example to insert it into another chart, call <code>Chart.DeleteSeries(series)</code>.
 +
* If you want to hide it, but keep it in the chart, set the property <code>Active</code> of the series to <code>false</code>.
  
 
[[Category:TAChart]]
 
[[Category:TAChart]]

Revision as of 11:28, 29 January 2018

This wiki is trying to answer frequently asked questions related to usage of TAChart at runtime

Series

How to add a series at runtime?

Just create the series, set its properties and call the chart method AddSeries

uses
  TATypes, TASeries;

function AddLineSeries(AChart: TChart; ATitle: String): TChartSeries;
begin
  Result := TLineSeries.Create(AChart.Owner);
  with TLineSeries(Result) do
  begin
    // Series title for the legend
    SeriesTitle := ATitle;
    // Show data point markers (red fill color, black border)
    ShowPoints := true;  
    Pointer.Brush.Color := clRed;
    Pointer.Pen.Color := clBlack;
    Pointer.Style := psCircle;
    // Show red line segments connecting the data points
    ShowLines := true;   
    LinePen.Style := psSolid;
    SeriesColor := clRed;
  end;
  // Add new series to the chart
  AChart.AddSeries(Result);
end;

How to iterate through the series of a chart?

The series are accessible via the array-like property Series of the chart. Note that this returns only the most fundamental series type, TBasicChartSeries, and a type-cast may be necessage before being able to access the series properties.

The following example re-colors all line series in red:

uses
  TASeries;
var 
  i: Integer;
begin
  for i := 0 to AChart.SeriesCount-1 do
    if AChart.Series[i] is TLineSeries then
      TLineSeries(AChart.Series[i]).SeriesColor := clRed;
end;

How to delete/hide a series at runtime?

  • If you don't need the series any more just destroy it: series.Free.
  • If you want to keept it for other usage, for example to insert it into another chart, call Chart.DeleteSeries(series).
  • If you want to hide it, but keep it in the chart, set the property Active of the series to false.