diff --git a/components/tachart/taseries.pas b/components/tachart/taseries.pas index 3dc6389528..106c683d92 100644 --- a/components/tachart/taseries.pas +++ b/components/tachart/taseries.pas @@ -353,6 +353,7 @@ type FSeries: TChartSeries; public constructor Create(ASeries: TChartSeries); + procedure Forget; override; procedure Notify; override; end; @@ -363,6 +364,12 @@ begin FSeries := ASeries; end; +procedure TChartSeriesListener.Forget; +begin + inherited Forget; + FSeries.FSource := nil; +end; + procedure TChartSeriesListener.Notify; begin FSeries.UpdateParentChart; @@ -713,13 +720,11 @@ end; procedure TLineSeries.SetXValue(AIndex: Integer; AValue: Double); begin ListSource.SetXValue(AIndex, AValue); - UpdateParentChart; end; procedure TLineSeries.SetYValue(AIndex: Integer; AValue: Double); begin - ListSource.SetXValue(AIndex, AValue); - UpdateParentChart; + ListSource.SetYValue(AIndex, AValue); end; function TLineSeries.GetXImgValue(AIndex: Integer): Integer; diff --git a/components/tachart/tasources.pas b/components/tachart/tasources.pas index 8e9a94d01c..c8b318544e 100644 --- a/components/tachart/tasources.pas +++ b/components/tachart/tasources.pas @@ -24,8 +24,9 @@ type private FIsListening: Boolean; public + procedure Forget; virtual; procedure Notify; virtual; abstract; - property IsListening: Boolean read FIsListening write FIsListening; + property IsListening: Boolean read FIsListening; end; { TCustomChartSource } @@ -193,7 +194,7 @@ var i: Integer; begin for i := 0 to High(FListeners) do - FListeners[i].IsListening := false; + FListeners[i].Forget; FListeners := nil; inherited Destroy; end; @@ -252,7 +253,7 @@ begin raise EListenerError.Create('Listener subscribed twice'); if FindListener(AListener) >= 0 then raise EListenerError.Create('Duplicate listener'); - AListener.IsListening := true; + AListener.FIsListening := true; SetLength(FListeners, Length(FListeners) + 1); FListeners[High(FListeners)] := AListener; end; @@ -263,7 +264,7 @@ var begin if not AListener.IsListening then raise EListenerError.Create('Listener not subscribed'); - AListener.IsListening := false; + AListener.FIsListening := false; j := FindListener(AListener); if j < 0 then raise EListenerError.Create('Listener not found'); @@ -676,5 +677,12 @@ begin Notify; end; +{ TListener } + +procedure TListener.Forget; +begin + FIsListening := false; +end; + end.