vcl-dxchartcore-dot-tdxchartcustomdiagram-81ce3c19.md
Allows you to customize the appearance of individual series points.
property OnGetSeriesPointDrawParameters: TdxChartGetSeriesPointDrawParametersEvent read; write;
You can handle OnGetSeriesPointDrawParameters and OnGetValueLabelDrawParameters events to customize individual series points and their value labels based on certain conditions.
The OnGetSeriesPointDrawParameters event occurs every time the diagram is about to determine how to draw a series point.
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.
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:
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;
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();
}
}
}
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.
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;
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();
}
}
}
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.
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;
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();
}
}
}
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:
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;
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