mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-03 21:23:52 +02:00
107 lines
2.4 KiB
ObjectPascal
107 lines
2.4 KiB
ObjectPascal
unit main;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
ExtCtrls, Spin, StdCtrls, Forms, TAGraph, TASeries, TASources, TATools,
|
|
TATypes;
|
|
|
|
type
|
|
|
|
{ TForm1 }
|
|
|
|
TForm1 = class(TForm)
|
|
btnPrevExtent: TButton;
|
|
cgUseBounds: TCheckGroup;
|
|
Chart1: TChart;
|
|
ChartToolset1: TChartToolset;
|
|
ChartToolset1PanDragTool1: TPanDragTool;
|
|
ChartToolset1ZoomDragTool1: TZoomDragTool;
|
|
clRight: TConstantLine;
|
|
clLeft: TConstantLine;
|
|
clTop: TConstantLine;
|
|
clBottom: TConstantLine;
|
|
Chart1LineSeries: TLineSeries;
|
|
fseBounds: TFloatSpinEdit;
|
|
lblHistory: TLabel;
|
|
lblBoundValue: TLabel;
|
|
Panel1: TPanel;
|
|
RandomChartSource1: TRandomChartSource;
|
|
procedure btnPrevExtentClick(Sender: TObject);
|
|
procedure cgUseBoundsItemClick(Sender: TObject; AIndex: integer);
|
|
procedure Chart1ExtentChanged(ASender: TChart);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure fseBoundsChange(Sender: TObject);
|
|
private
|
|
FHistory: TChartExtentHistory;
|
|
FIsRemembering: Boolean;
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
uses
|
|
SysUtils, TAChartUtils;
|
|
|
|
{ TForm1 }
|
|
|
|
procedure TForm1.btnPrevExtentClick(Sender: TObject);
|
|
begin
|
|
FIsRemembering := FHistory.Count > 0;
|
|
if FIsRemembering then
|
|
Chart1.LogicalExtent := FHistory.Pop;
|
|
end;
|
|
|
|
procedure TForm1.cgUseBoundsItemClick(Sender: TObject; AIndex: integer);
|
|
begin
|
|
Unused(AIndex);
|
|
with Chart1.Extent do begin
|
|
UseXMin := cgUseBounds.Checked[0];
|
|
UseXMax := cgUseBounds.Checked[1];
|
|
UseYMin := cgUseBounds.Checked[2];
|
|
UseYMax := cgUseBounds.Checked[3];
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.Chart1ExtentChanged(ASender: TChart);
|
|
begin
|
|
Unused(ASender);
|
|
if not FIsRemembering then
|
|
FHistory.Add(Chart1.PrevLogicalExtent);
|
|
FIsRemembering := false;
|
|
btnPrevExtent.Enabled := FHistory.Count > 0;
|
|
lblHistory.Caption := Format(
|
|
'History: %d of %d', [FHistory.Count, FHistory.Capacity]);
|
|
end;
|
|
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
begin
|
|
fseBoundsChange(nil);
|
|
FHistory := TChartExtentHistory.Create;
|
|
FHistory.Capacity := 8;
|
|
FIsRemembering := true;
|
|
end;
|
|
|
|
procedure TForm1.fseBoundsChange(Sender: TObject);
|
|
begin
|
|
clRight.Position := fseBounds.Value;
|
|
clLeft.Position := -fseBounds.Value;
|
|
clTop.Position := fseBounds.Value;
|
|
clBottom.Position := -fseBounds.Value;
|
|
with Chart1.Extent do begin
|
|
XMin := -fseBounds.Value;
|
|
XMax := fseBounds.Value;
|
|
YMin := -fseBounds.Value;
|
|
YMax := fseBounds.Value;
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|