TAChart: Make the TBasicChartSeries.OnGetPointerStyle event a procedure (instead of a function). Update line demo.

git-svn-id: trunk@52233 -
This commit is contained in:
wp 2016-04-22 10:55:20 +00:00
parent 51ac6216a6
commit c8432ee164
3 changed files with 15 additions and 13 deletions

View File

@ -14,9 +14,9 @@ object Form1: TForm1
Height = 494 Height = 494
Top = 0 Top = 0
Width = 691 Width = 691
ActivePage = tsCustomDrawPointer ActivePage = tsGetPointerStyle
Align = alClient Align = alClient
TabIndex = 2 TabIndex = 3
TabOrder = 0 TabOrder = 0
OnChange = PageControl1Change OnChange = PageControl1Change
object tsFast: TTabSheet object tsFast: TTabSheet

View File

@ -66,8 +66,8 @@ type
procedure cbSortedChange(Sender: TObject); procedure cbSortedChange(Sender: TObject);
procedure edEveryNthChange(Sender: TObject); procedure edEveryNthChange(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
function lsGetPointerStyleGetPointerStyle(ASender: TChartSeries; procedure lsGetPointerStyleGetPointerStyle(ASender: TChartSeries;
AValueIndex: Integer): TSeriesPointerStyle; AValueIndex: Integer; var AStyle: TSeriesPointerStyle);
procedure lsCustomDrawPointerCustomDrawPointer(ASender: TChartSeries; procedure lsCustomDrawPointerCustomDrawPointer(ASender: TChartSeries;
ADrawer: IChartDrawer; AIndex: Integer; ACenter: TPoint); ADrawer: IChartDrawer; AIndex: Integer; ACenter: TPoint);
procedure PageControl1Change(Sender: TObject); procedure PageControl1Change(Sender: TObject);
@ -190,10 +190,10 @@ begin
end; end;
end; end;
function TForm1.lsGetPointerStyleGetPointerStyle(ASender: TChartSeries; procedure TForm1.lsGetPointerStyleGetPointerStyle(ASender: TChartSeries;
AValueIndex: Integer): TSeriesPointerStyle; AValueIndex: Integer; var AStyle: TSeriesPointerStyle);
begin begin
Result := TSeriesPointerStyle(AValueIndex mod (ord(High(TSeriespointerStyle))+1)); AStyle := TSeriesPointerStyle(AValueIndex mod (ord(High(TSeriespointerStyle))+1));
end; end;
procedure TForm1.lsCustomDrawPointerCustomDrawPointer(ASender: TChartSeries; procedure TForm1.lsCustomDrawPointerCustomDrawPointer(ASender: TChartSeries;

View File

@ -235,8 +235,8 @@ type
ASender: TChartSeries; ADrawer: IChartDrawer; AIndex: Integer; ASender: TChartSeries; ADrawer: IChartDrawer; AIndex: Integer;
ACenter: TPoint) of object; ACenter: TPoint) of object;
TSeriesPointerStyleEvent = function (ASender: TChartSeries; TSeriesPointerStyleEvent = procedure (ASender: TChartSeries;
AValueIndex: Integer): TSeriesPointerStyle of object; AValueIndex: Integer; var AStyle: TSeriesPointerStyle) of object;
{ TBasicPointSeries } { TBasicPointSeries }
@ -1105,7 +1105,7 @@ var
i: Integer; i: Integer;
p: TDoublePoint; p: TDoublePoint;
ai: TPoint; ai: TPoint;
ps: TSeriesPointerStyle; ps, saved_ps: TSeriesPointerStyle;
begin begin
Assert(Pointer <> nil, 'Series pointer'); Assert(Pointer <> nil, 'Series pointer');
if not Pointer.Visible then exit; if not Pointer.Visible then exit;
@ -1116,15 +1116,17 @@ begin
if Assigned(FOnCustomDrawPointer) then if Assigned(FOnCustomDrawPointer) then
FOnCustomDrawPointer(Self, ADrawer, i, ai) FOnCustomDrawPointer(Self, ADrawer, i, ai)
else begin else begin
ps := Pointer.Style;
if Assigned(FOnGetPointerStyle) then begin if Assigned(FOnGetPointerStyle) then begin
saved_ps := Pointer.Style;
ps := saved_ps;
FOnGetPointerStyle(self, i, ps);
Pointer.SetOwner(nil); // avoid recursion Pointer.SetOwner(nil); // avoid recursion
Pointer.Style := FOnGetPointerStyle(self, i); Pointer.Style := ps;
end; end;
Pointer.Draw(ADrawer, ai, Source[i]^.Color); Pointer.Draw(ADrawer, ai, Source[i]^.Color);
AfterDrawPointer(ADrawer, i, ai); AfterDrawPointer(ADrawer, i, ai);
if Assigned(FOnGetPointerStyle) then begin if Assigned(FOnGetPointerStyle) then begin
Pointer.Style := ps; Pointer.Style := saved_ps;
Pointer.SetOwner(ParentChart); Pointer.SetOwner(ParentChart);
end; end;
end; end;