Back to Devexpress

TdxChartCustomDiagram.OnGetSeriesPointDrawParameters Event

vcl-dxchartcore-dot-tdxchartcustomdiagram-81ce3c19.md

latest14.5 KB
Original Source

TdxChartCustomDiagram.OnGetSeriesPointDrawParameters Event

Allows you to customize the appearance of individual series points.

Declaration

delphi
property OnGetSeriesPointDrawParameters: TdxChartGetSeriesPointDrawParametersEvent read; write;

Remarks

You can handle OnGetSeriesPointDrawParameters and OnGetValueLabelDrawParameters events to customize individual series points and their value labels based on certain conditions.

Event Occurrence

The OnGetSeriesPointDrawParameters event occurs every time the diagram is about to determine how to draw a series point.

Event Parameters

The following parameters are available within an OnGetSeriesPointDrawParameters event handler:

SenderThis parameter provides access to the diagram that raised the appearance customization event.AArgsThis parameter allows you to identify the processed series point and customize its appearance settings.

Refer to the TdxChartGetSeriesPointDrawParametersEvent procedural type description for detailed information on all available options.

Code Examples

Simple Area View

The following code example demonstrates a diagram’s OnGetSeriesPointDrawParameters event handler that changes the appearance settings of points with peak values in a Simple Area series:

delphi
procedure TMyForm.cdAreaGetSeriesPointDrawParameters(Sender: TdxChartCustomDiagram;
  AArgs: TdxChartGetSeriesPointDrawParametersEventArgs);
var
  AAreaDrawParameters: TdxChartAreaSeriesPointDrawParameters;
  ASeries: TdxChartCustomSeries;
  AIndex: Integer;
begin
  if AArgs.SeriesPoint.Series.Caption = 'DevAV South' then
  begin
    if AArgs.DrawParameters.ClassType <> TdxChartAreaSeriesPointDrawParameters then Exit;
    AAreaDrawParameters := AArgs.DrawParameters as TdxChartAreaSeriesPointDrawParameters;
    AIndex := AArgs.SeriesPoint.Index;
    ASeries := AArgs.SeriesPoint.Series;
    if ((AIndex = 0) and (ASeries.Points.Values[AIndex] > ASeries.Points.Values[AIndex + 1])) or
       ((AIndex > 0) and (AIndex < ASeries.Points.Count - 1) and
       (ASeries.Points.Values[AIndex] > ASeries.Points.Values[AIndex + 1]) and
        (ASeries.Points.Values[AIndex] > ASeries.Points.Values[AIndex - 1])) then
    begin
      AAreaDrawParameters.MarkerAppearance.FillOptions.Color := TdxAlphaColors.Red;
      AAreaDrawParameters.Appearance.BeginUpdate;
      AAreaDrawParameters.Appearance.FillOptions.Color := TdxAlphaColors.OrangeRed;
      AAreaDrawParameters.Appearance.FillOptions.Mode := TdxFillOptionsMode.Hatch;
      AAreaDrawParameters.Appearance.FillOptions.HatchStyle := TdxFillOptionsHatchStyle.ForwardDiagonal;
      AAreaDrawParameters.Appearance.FillOptions.Color2 := TdxAlphaColors.Teal;
      AAreaDrawParameters.Appearance.StrokeOptions.Color := TdxAlphaColors.Red;
      AAreaDrawParameters.Appearance.StrokeOptions.Style := TdxStrokeStyle.Solid;
      AAreaDrawParameters.Appearance.EndUpdate;
    end;
  end;
end;
cpp
void __fastcall TMyForm::cdAreaGetSeriesPointDrawParameters(TdxChartCustomDiagram *Sender
   TdxChartGetSeriesPointDrawParametersEventArgs *AArgs)
{
  TdxChartAreaSeriesPointDrawParameters *AAreaDrawParameters;
  TdxChartCustomSeries *ASeries;
  int AIndex;
  // ...
  if(AArgs->SeriesPoint->Series->Caption == "DevAV South")
  {
    if(AArgs->DrawParameters->ClassType() != __classid(TdxChartAreaSeriesPointDrawParameters)) { return; }
    AAreaDrawParameters = dynamic_cast<TdxChartAreaSeriesPointDrawParameters*>(AArgs->DrawParameters);
    AIndex = AArgs->SeriesPoint->Index;
    ASeries = AArgs->SeriesPoint->Series;
    if(((AIndex == 0) && (ASeries->Points->Values[AIndex] > ASeries->Points->Values[AIndex + 1])) ||
      ((AIndex > 0) && (AIndex < ASeries->Points->Count - 1) &&
      (ASeries->Points->Values[AIndex] > ASeries->Points->Values[AIndex + 1]) &&
      (ASeries->Points->Values[AIndex] > ASeries->Points->Values[AIndex - 1])))
      {
        AAreaDrawParameters->MarkerAppearance->FillOptions->Color = TdxAlphaColors::Red;
        AAreaDrawParameters->Appearance->BeginUpdate();
        AAreaDrawParameters->Appearance->FillOptions->Color = TdxAlphaColors::OrangeRed;
        AAreaDrawParameters->Appearance->FillOptions->Color2 = TdxAlphaColors::Teal;
        AAreaDrawParameters->Appearance->FillOptions->Mode = TdxFillOptionsMode::Hatch;
        AAreaDrawParameters->Appearance->FillOptions->HatchStyle = TdxFillOptionsHatchStyle::ForwardDiagonal;
        AAreaDrawParameters->Appearance->StrokeOptions->Color = TdxAlphaColors::Red;
        AAreaDrawParameters->Appearance->StrokeOptions->Style = TdxStrokeStyle::Solid;
        AAreaDrawParameters->Appearance->EndUpdate();
      }
  }
}

Simple Bar View

The following code example demonstrates a diagram’s OnGetSeriesPointDrawParameters event handler that changes the appearance settings of all bars that display peak values in a Simple Bar series.

delphi
procedure TMyForm.cdBarGetSeriesPointDrawParameters(Sender: TdxChartCustomDiagram;
  AArgs: TdxChartGetSeriesPointDrawParametersEventArgs);
var
  ABarDrawParameters: TdxChartBarSeriesPointDrawParameters;
  ASeries: TdxChartCustomSeries;
  AIndex: Integer;
begin
  if AArgs.SeriesPoint.Series.Caption = '2020' then
  begin
    if AArgs.DrawParameters.ClassType <> TdxChartBarSeriesPointDrawParameters then Exit;
    ABarDrawParameters := AArgs.DrawParameters as TdxChartBarSeriesPointDrawParameters;
    AIndex := AArgs.SeriesPoint.Index;
    ASeries := AArgs.SeriesPoint.Series;
    if ((AIndex = 0) and (ASeries.Points.Values[AIndex] > ASeries.Points.Values[AIndex + 1])) or
       ((AIndex > 0) and (AIndex < ASeries.Points.Count - 1) and
       (ASeries.Points.Values[AIndex] > ASeries.Points.Values[AIndex + 1]) and
        (ASeries.Points.Values[AIndex] > ASeries.Points.Values[AIndex - 1])) then
    begin
      ABarDrawParameters.Appearance.BeginUpdate;
      ABarDrawParameters.Appearance.FillOptions.Color := TdxAlphaColors.OrangeRed;
      ABarDrawParameters.Appearance.FillOptions.Mode := TdxFillOptionsMode.Hatch;
      ABarDrawParameters.Appearance.FillOptions.HatchStyle := TdxFillOptionsHatchStyle.ForwardDiagonal;
      ABarDrawParameters.Appearance.FillOptions.Color2 := TdxAlphaColors.Teal;
      ABarDrawParameters.Appearance.StrokeOptions.Color := TdxAlphaColors.Red;
      ABarDrawParameters.Appearance.StrokeOptions.Style := TdxStrokeStyle.Solid;
      ABarDrawParameters.Appearance.EndUpdate;
    end;
  end;
end;
cpp
void __fastcall TMyForm::cdBarGetSeriesPointDrawParameters(TdxChartCustomDiagram *Sender
   TdxChartGetSeriesPointDrawParametersEventArgs *AArgs)
{
  TdxChartBarSeriesPointDrawParameters *ABarDrawParameters;
  TdxChartCustomSeries *ASeries;
  int AIndex;
  // ...
  if(AArgs->SeriesPoint->Series->Caption == "2020")
  {
    if(AArgs->DrawParameters->ClassType() != __classid(TdxChartBarSeriesPointDrawParameters)) { return; }
    ABarDrawParameters = dynamic_cast<TdxChartBarSeriesPointDrawParameters*>(AArgs->DrawParameters);
    AIndex = AArgs->SeriesPoint->Index;
    ASeries = AArgs->SeriesPoint->Series;
    if(((AIndex == 0) && (ASeries->Points->Values[AIndex] > ASeries->Points->Values[AIndex + 1])) ||
      ((AIndex > 0) && (AIndex < ASeries->Points->Count - 1) &&
      (ASeries->Points->Values[AIndex] > ASeries->Points->Values[AIndex + 1]) &&
      (ASeries->Points->Values[AIndex] > ASeries->Points->Values[AIndex - 1])))
      {
        ABarDrawParameters->MarkerAppearance->FillOptions->Color = TdxAlphaColors::Red;
        ABarDrawParameters->Appearance->BeginUpdate();
        ABarDrawParameters->Appearance->FillOptions->Color = TdxAlphaColors::OrangeRed;
        ABarDrawParameters->Appearance->FillOptions->Color2 = TdxAlphaColors::Teal;
        ABarDrawParameters->Appearance->FillOptions->Mode = TdxFillOptionsMode::Hatch;
        ABarDrawParameters->Appearance->FillOptions->HatchStyle = TdxFillOptionsHatchStyle::ForwardDiagonal;
        ABarDrawParameters->Appearance->StrokeOptions->Color = TdxAlphaColors::Red;
        ABarDrawParameters->Appearance->StrokeOptions->Style = TdxStrokeStyle::Solid;
        ABarDrawParameters->Appearance->EndUpdate();
      }
  }
}

Simple Line View

The following code example demonstrates a diagram’s OnGetSeriesPointDrawParameters event handler that changes the appearance settings of points with peak values in a Simple Line series.

delphi
procedure TMyForm.cdLineGetSeriesPointDrawParameters(Sender: TdxChartCustomDiagram;
  AArgs: TdxChartGetSeriesPointDrawParametersEventArgs);
var
  ALineDrawParameters: TdxChartLineSeriesPointDrawParameters;
  ASeries: TdxChartCustomSeries;
  AIndex: Integer;
begin
  if AArgs.SeriesPoint.Series.Caption = 'Europe' then
  begin
    if AArgs.DrawParameters.ClassType <> TdxChartLineSeriesPointDrawParameters then Exit;
    ALineDrawParameters := AArgs.DrawParameters as TdxChartLineSeriesPointDrawParameters;
    AIndex := AArgs.SeriesPoint.Index;
    ASeries := AArgs.SeriesPoint.Series;
    if ((AIndex = 0) and (ASeries.Points.Values[AIndex] > ASeries.Points.Values[AIndex + 1])) or
       ((AIndex > 0) and (AIndex < ASeries.Points.Count - 1) and
       (ASeries.Points.Values[AIndex] > ASeries.Points.Values[AIndex + 1]) and
        (ASeries.Points.Values[AIndex] > ASeries.Points.Values[AIndex - 1])) then
    begin
      ALineDrawParameters.MarkerAppearance.FillOptions.Color := TdxAlphaColors.Red;
      ALineDrawParameters.Appearance.BeginUpdate;
      ALineDrawParameters.Appearance.StrokeOptions.Color := TdxAlphaColors.Red;
      ALineDrawParameters.Appearance.StrokeOptions.Style := TdxStrokeStyle.Solid;
      ALineDrawParameters.Appearance.EndUpdate;
    end;
  end;
end;
cpp
void __fastcall TMyForm::cdLineGetSeriesPointDrawParameters(TdxChartCustomDiagram *Sender
   TdxChartGetSeriesPointDrawParametersEventArgs *AArgs)
{
  TdxChartLineSeriesPointDrawParameters *ALineDrawParameters;
  TdxChartCustomSeries *ASeries;
  int AIndex;
  // ...
  if(AArgs->SeriesPoint->Series->Caption == "Europe")
  {
    if(AArgs->DrawParameters->ClassType() != __classid(TdxChartLineSeriesPointDrawParameters)) { return; }
    ALineDrawParameters = dynamic_cast<TdxChartLineSeriesPointDrawParameters*>(AArgs->DrawParameters);
    AIndex = AArgs->SeriesPoint->Index;
    ASeries = AArgs->SeriesPoint->Series;
    if(((AIndex == 0) && (ASeries->Points->Values[AIndex] > ASeries->Points->Values[AIndex + 1])) ||
      ((AIndex > 0) && (AIndex < ASeries->Points->Count - 1) &&
      (ASeries->Points->Values[AIndex] > ASeries->Points->Values[AIndex + 1]) &&
      (ASeries->Points->Values[AIndex] > ASeries->Points->Values[AIndex - 1])))
      {
        ALineDrawParameters->MarkerAppearance->FillOptions->Color = TdxAlphaColors::Red;
        ALineDrawParameters->Appearance->BeginUpdate();
        ALineDrawParameters->Appearance->StrokeOptions->Color = TdxAlphaColors::Red;
        ALineDrawParameters->Appearance->StrokeOptions->Style = TdxStrokeStyle::Solid;
        ALineDrawParameters->Appearance->EndUpdate();
      }
  }
}

Pie View

The following code example demonstrates a diagram’s OnGetSeriesPointDrawParameters event handler that changes the appearance settings of the pie slice that shows the English language’s share:

delphi
procedure TMyForm.cdAreaGetSeriesPointDrawParameters(Sender: TdxChartCustomDiagram;
  AArgs: TdxChartGetSeriesPointDrawParametersEventArgs);
var
  ASimpleDrawParameters: TdxChartSimpleSeriesPointDrawParameters;
begin
  if AArgs.SeriesPoint.Argument = 'English' then
  begin
    if AArgs.DrawParameters.ClassType <> TdxChartSimpleSeriesPointDrawParameters then Exit;
    ASimpleDrawParameters := AArgs.DrawParameters as TdxChartSimpleSeriesPointDrawParameters;
    ASimpleDrawParameters.FillOptions.BeginUpdate;
    ASimpleDrawParameters.FillOptions.Color := TdxAlphaColors.LightCyan;
    ASimpleDrawParameters.FillOptions.Color2 := TdxAlphaColors.LightBlue;
    ASimpleDrawParameters.FillOptions.Mode := TdxFillOptionsMode.Hatch;
    ASimpleDrawParameters.FillOptions.HatchStyle := TdxFillOptionsHatchStyle.ForwardDiagonal;
    ASimpleDrawParameters.FillOptions.EndUpdate;
  end;
end;
cpp
void __fastcall TMyForm::cdAreaGetSeriesPointDrawParameters(TdxChartCustomDiagram *Sender
   TdxChartGetSeriesPointDrawParametersEventArgs *AArgs)
{
  TdxChartSimpleSeriesPointDrawParameters *ASimpleDrawParameters;
  // ...
  if(AArgs->SeriesPoint->Argument == "English")
  {
    if(AArgs->DrawParameters->ClassType() != __classid(TdxChartSimpleSeriesPointDrawParameters)) { return; }
    ASimpleDrawParameters = dynamic_cast<TdxChartSimpleSeriesPointDrawParameters*>(AArgs->DrawParameters);
    ASimpleDrawParameters->FillOptions->BeginUpdate();
    ASimpleDrawParameters->FillOptions->Color = TdxAlphaColors::LightCyan;
    ASimpleDrawParameters->FillOptions->Color2 = TdxAlphaColors::LightBlue;
    ASimpleDrawParameters->FillOptions->Mode = TdxFillOptionsMode::Hatch;
    ASimpleDrawParameters->FillOptions->HatchStyle = TdxFillOptionsHatchStyle::ForwardDiagonal;
    ASimpleDrawParameters->FillOptions->EndUpdate();
  }
}

See Also

TdxChartCustomDiagram.OnGetValueLabelDrawParameters Event

TdxChartPalette.GetColorsForIndex Function

TdxChartCustomDiagram Class

TdxChartCustomDiagram Members

dxChartCore Unit