mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-06 09:07:31 +01:00
TAChart: Broadcast TGUIConnector changes to charts
git-svn-id: trunk@40214 -
This commit is contained in:
parent
97642929c0
commit
7c928877c9
@ -183,6 +183,7 @@ type
|
||||
FFoot: TChartTitle;
|
||||
FFrame: TChartPen;
|
||||
FGUIConnector: TChartGUIConnector;
|
||||
FGUIConnectorListener: TListener;
|
||||
FLegend: TChartLegend;
|
||||
FLogicalExtent: TDoubleRect;
|
||||
FMargins: TChartMargins;
|
||||
@ -607,6 +608,8 @@ begin
|
||||
FConnectorData.FCanvas := Canvas;
|
||||
FDefaultGUIConnector := TChartGUIConnectorCanvas.Create(Self);
|
||||
FDefaultGUIConnector.CreateDrawer(FConnectorData);
|
||||
FGUIConnectorListener := TListener.Create(@FGUIConnector, @StyleChanged);
|
||||
|
||||
FScale := DoublePoint(1, 1);
|
||||
|
||||
Width := DEFAULT_CHART_WIDTH;
|
||||
@ -672,6 +675,7 @@ begin
|
||||
FreeAndNil(FFoot);
|
||||
FreeAndNil(FAxisList);
|
||||
FreeAndNil(FFrame);
|
||||
FreeAndNil(FGUIConnectorListener);
|
||||
FreeAndNil(FExtent);
|
||||
FreeAndNil(FExtentSizeLimit);
|
||||
FreeAndNil(FMargins);
|
||||
@ -1421,9 +1425,13 @@ begin
|
||||
if FGUIConnector = AValue then exit;
|
||||
if FGUIConnector <> nil then
|
||||
RemoveFreeNotification(FGUIConnector);
|
||||
if FGUIConnectorListener.IsListening then
|
||||
FGUIConnector.Broadcaster.Unsubscribe(FGUIConnectorListener);
|
||||
FGUIConnector := AValue;
|
||||
if FGUIConnector <> nil then
|
||||
if FGUIConnector <> nil then begin
|
||||
FGUIConnector.Broadcaster.Subscribe(FGUIConnectorListener);
|
||||
FreeNotification(FGUIConnector);
|
||||
end;
|
||||
EffectiveGUIConnector.CreateDrawer(FConnectorData);
|
||||
StyleChanged(Self);
|
||||
end;
|
||||
|
||||
@ -22,7 +22,7 @@ interface
|
||||
|
||||
uses
|
||||
Classes, Graphics,
|
||||
TADrawUtils, TADrawerCanvas;
|
||||
TAChartUtils, TADrawUtils, TADrawerCanvas;
|
||||
|
||||
type
|
||||
TChartGUIConnectorData = record
|
||||
@ -33,10 +33,17 @@ type
|
||||
end;
|
||||
|
||||
TChartGUIConnector = class(TComponent)
|
||||
strict private
|
||||
FBroadcaster: TBroadcaster;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure CreateDrawer(var AData: TChartGUIConnectorData); virtual; abstract;
|
||||
procedure SetBounds(var AData: TChartGUIConnectorData); virtual; abstract;
|
||||
procedure Display(var AData: TChartGUIConnectorData); virtual; abstract;
|
||||
|
||||
property Broadcaster: TBroadcaster read FBroadcaster;
|
||||
end;
|
||||
|
||||
TChartGUIConnectorCanvas = class(TChartGUIConnector)
|
||||
@ -49,7 +56,21 @@ type
|
||||
implementation
|
||||
|
||||
uses
|
||||
TAChartUtils;
|
||||
SysUtils;
|
||||
|
||||
{ TChartGUIConnector }
|
||||
|
||||
constructor TChartGUIConnector.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
FBroadcaster := TBroadcaster.Create;
|
||||
end;
|
||||
|
||||
destructor TChartGUIConnector.Destroy;
|
||||
begin
|
||||
FreeAndNil(FBroadcaster);
|
||||
inherited;
|
||||
end;
|
||||
|
||||
{ TChartGUIConnectorCanvas }
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user