mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-05 16:39:32 +01:00
TAChart: Refresh chart for some changes of TDataPointDistanceTool properties in permanent mode
git-svn-id: trunk@38450 -
This commit is contained in:
parent
2a973ceb54
commit
d485227dea
@ -61,6 +61,7 @@ type
|
|||||||
// Workaround for FPC 2.6 bug. Remove after migration to 2.8.
|
// Workaround for FPC 2.6 bug. Remove after migration to 2.8.
|
||||||
FAnchors: array of TObject;
|
FAnchors: array of TObject;
|
||||||
FDataPointMode: TDataPointMode;
|
FDataPointMode: TDataPointMode;
|
||||||
|
FLastChart: TChart;
|
||||||
FMarks: TDataPointDistanceToolMarks;
|
FMarks: TDataPointDistanceToolMarks;
|
||||||
FMeasureMode: TChartDistanceMode;
|
FMeasureMode: TChartDistanceMode;
|
||||||
FOnGetDistanceText: TDataPointGetDistanceTextEvent;
|
FOnGetDistanceText: TDataPointGetDistanceTextEvent;
|
||||||
@ -68,6 +69,7 @@ type
|
|||||||
FOptions: TOptions;
|
FOptions: TOptions;
|
||||||
FPointerEnd: TDataPointDistanceToolPointer;
|
FPointerEnd: TDataPointDistanceToolPointer;
|
||||||
FPointerStart: TDataPointDistanceToolPointer;
|
FPointerStart: TDataPointDistanceToolPointer;
|
||||||
|
procedure Changed(ASender: TObject);
|
||||||
function GetPointEnd: TDataPointTool.TPointRef; inline;
|
function GetPointEnd: TDataPointTool.TPointRef; inline;
|
||||||
function GetPointStart: TDataPointTool.TPointRef;
|
function GetPointStart: TDataPointTool.TPointRef;
|
||||||
procedure SetMarks(AValue: TDataPointDistanceToolMarks);
|
procedure SetMarks(AValue: TDataPointDistanceToolMarks);
|
||||||
@ -86,6 +88,7 @@ type
|
|||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
|
||||||
function Distance(AUnits: TChartUnits = cuAxis): Double;
|
function Distance(AUnits: TChartUnits = cuAxis): Double;
|
||||||
procedure KeyDown(APoint: TPoint); override;
|
procedure KeyDown(APoint: TPoint); override;
|
||||||
procedure KeyUp(APoint: TPoint); override;
|
procedure KeyUp(APoint: TPoint); override;
|
||||||
@ -150,6 +153,15 @@ end;
|
|||||||
|
|
||||||
{ TDataPointDistanceTool }
|
{ TDataPointDistanceTool }
|
||||||
|
|
||||||
|
procedure TDataPointDistanceTool.Changed(ASender: TObject);
|
||||||
|
begin
|
||||||
|
if not (dpdoPermanent in FOptions) then exit;
|
||||||
|
if FChart <> nil then
|
||||||
|
FChart.StyleChanged(ASender)
|
||||||
|
else if FLastChart <> nil then
|
||||||
|
FLastChart.StyleChanged(ASender);
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TDataPointDistanceTool.Create(AOwner: TComponent);
|
constructor TDataPointDistanceTool.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
@ -235,12 +247,12 @@ begin
|
|||||||
DrawPointer(PointerEnd, p2);
|
DrawPointer(PointerEnd, p2);
|
||||||
if Marks.Visible then begin
|
if Marks.Visible then begin
|
||||||
flip := (dpdoFlipLabel in Options) and ((a > Pi /2) or (a < -Pi / 2));
|
flip := (dpdoFlipLabel in Options) and ((a > Pi /2) or (a < -Pi / 2));
|
||||||
if dpdoRotateLabel in Options then
|
Marks.SetAdditionalAngle(
|
||||||
Marks.SetAdditionalAngle(IfThen(flip, Pi - a, -a));
|
IfThen(dpdoRotateLabel in Options, IfThen(flip, Pi - a, -a), 0));
|
||||||
p1 := (p1 + p2) div 2;
|
p1 := (p1 + p2) div 2;
|
||||||
a += IfThen((dpdoLabelAbove in Options) xor flip, -Pi / 2, Pi / 2);
|
a += IfThen((dpdoLabelAbove in Options) xor flip, -Pi / 2, Pi / 2);
|
||||||
p2 := p1 + RotatePointX(Marks.Distance, a);
|
p2 := p1 + RotatePointX(Marks.Distance, a);
|
||||||
Marks.DrawLabel(FChart.Drawer, p1, p2, GetDistanceText, dummy)
|
Marks.DrawLabel(FChart.Drawer, p1, p2, GetDistanceText, dummy);
|
||||||
end;
|
end;
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
@ -327,16 +339,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDataPointDistanceTool.MouseUp(APoint: TPoint);
|
procedure TDataPointDistanceTool.MouseUp(APoint: TPoint);
|
||||||
var
|
|
||||||
ch: TChart;
|
|
||||||
begin
|
begin
|
||||||
MouseMove(APoint);
|
MouseMove(APoint);
|
||||||
if Assigned(OnMeasure) and (PointStart.GraphPos <> PointEnd.GraphPos) then
|
if Assigned(OnMeasure) and (PointStart.GraphPos <> PointEnd.GraphPos) then
|
||||||
OnMeasure(Self);
|
OnMeasure(Self);
|
||||||
if dpdoPermanent in Options then begin
|
if dpdoPermanent in Options then begin
|
||||||
ch := FChart;
|
FLastChart := FChart;
|
||||||
Deactivate;
|
Deactivate
|
||||||
FChart := ch;
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
Hide;
|
Hide;
|
||||||
@ -369,11 +378,13 @@ procedure TDataPointDistanceTool.SetMarks(AValue: TDataPointDistanceToolMarks);
|
|||||||
begin
|
begin
|
||||||
if FMarks = AValue then exit;
|
if FMarks = AValue then exit;
|
||||||
FMarks.Assign(AValue);
|
FMarks.Assign(AValue);
|
||||||
|
Changed(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDataPointDistanceTool.SetOptions(AValue: TOptions);
|
procedure TDataPointDistanceTool.SetOptions(AValue: TOptions);
|
||||||
begin
|
begin
|
||||||
if FOptions = AValue then exit;
|
if FOptions = AValue then exit;
|
||||||
|
Changed(Self);
|
||||||
FOptions := AValue;
|
FOptions := AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -382,6 +393,7 @@ procedure TDataPointDistanceTool.SetPointerEnd(
|
|||||||
begin
|
begin
|
||||||
if FPointerEnd = AValue then exit;
|
if FPointerEnd = AValue then exit;
|
||||||
FPointerEnd.Assign(AValue);
|
FPointerEnd.Assign(AValue);
|
||||||
|
Changed(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDataPointDistanceTool.SetPointerStart(
|
procedure TDataPointDistanceTool.SetPointerStart(
|
||||||
@ -389,6 +401,7 @@ procedure TDataPointDistanceTool.SetPointerStart(
|
|||||||
begin
|
begin
|
||||||
if FPointerStart = AValue then exit;
|
if FPointerStart = AValue then exit;
|
||||||
FPointerStart.Assign(AValue);
|
FPointerStart.Assign(AValue);
|
||||||
|
Changed(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user