TAChart: Add "Auto Y extent" page to the "func" demo

git-svn-id: trunk@38731 -
This commit is contained in:
ask 2012-09-18 09:33:06 +00:00
parent 3acae5fe9f
commit 2974002ed0
3 changed files with 108 additions and 9 deletions

View File

@ -57,6 +57,7 @@
<Filename Value="main.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="main"/>
</Unit1>
@ -69,11 +70,6 @@
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<UseAnsiStrings Value="False"/>
</SyntaxOptions>
</Parsing>
<Linking>
<Options>
<Win32>

View File

@ -7,7 +7,7 @@ object Form1: TForm1
ClientHeight = 459
ClientWidth = 550
Position = poScreenCenter
LCLVersion = '0.9.31'
LCLVersion = '1.1'
object PageControl1: TPageControl
Left = 0
Height = 459
@ -17,6 +17,7 @@ object Form1: TForm1
Align = alClient
TabIndex = 0
TabOrder = 0
OnChange = PageControl1Change
object tsDomain: TTabSheet
Caption = 'Domain'
ClientHeight = 433
@ -58,7 +59,6 @@ object Form1: TForm1
object Chart1FuncSeries1: TFuncSeries
Extent.UseXMax = True
Extent.UseXMin = True
Extent.UseYMin = True
Extent.XMax = 6.28
Extent.XMin = -6.28
Extent.YMax = 2
@ -303,9 +303,9 @@ object Form1: TForm1
end
object lblSplineDegree: TLabel
Left = 12
Height = 14
Height = 13
Top = 8
Width = 36
Width = 35
Caption = 'Degree'
ParentColor = False
end
@ -345,6 +345,67 @@ object Form1: TForm1
end
end
end
object tsAutoExtentY: TTabSheet
Caption = 'Auto Y extent'
ClientHeight = 433
ClientWidth = 542
object chAutoExtentY: TChart
Left = 0
Height = 402
Top = 0
Width = 542
AxisList = <
item
Minors = <>
Title.LabelFont.Orientation = 900
end
item
Alignment = calBottom
Minors = <>
end>
Foot.Brush.Color = clBtnFace
Foot.Font.Color = clBlue
Title.Brush.Color = clBtnFace
Title.Font.Color = clBlue
Title.Text.Strings = (
'TAChart'
)
Align = alClient
DoubleBuffered = True
ParentColor = False
object chAutoExtentYFuncSeries1: TFuncSeries
Extent.UseXMax = True
Extent.UseXMin = True
Extent.UseYMax = True
Extent.UseYMin = True
Extent.XMax = 1
Extent.YMax = 5
Extent.YMin = -5
OnCalculate = chAutoExtentYFuncSeries1Calculate
Pen.Color = 16711808
Pen.Width = 2
end
end
object pnlAutoExtentY: TPanel
Left = 0
Height = 31
Top = 402
Width = 542
Align = alBottom
ClientHeight = 31
ClientWidth = 542
TabOrder = 1
object cbAutoExtentY: TCheckBox
Left = 8
Height = 17
Top = 8
Width = 87
Caption = 'Auto Y extent'
OnChange = cbAutoExtentYChange
TabOrder = 0
end
end
end
end
object UserDefinedChartSource1: TUserDefinedChartSource
OnGetChartDataItem = UserDefinedChartSource1GetChartDataItem
@ -391,4 +452,10 @@ object Form1: TForm1
Base = 10
end
end
object Timer1: TTimer
Interval = 200
OnTimer = Timer1Timer
left = 448
top = 296
end
end

View File

@ -28,6 +28,7 @@ type
Chart1YAxis: TConstantLine;
catSpline: TChartAxisTransformations;
catSplineLogarithmAxisTransform: TLogarithmAxisTransform;
chAutoExtentY: TChart;
ChartSpline: TChart;
ChartColorMap: TChart;
ChartColorMapColorMapSeries1: TColorMapSeries;
@ -35,6 +36,8 @@ type
ChartSplineCubicSplineSeries1: TCubicSplineSeries;
ChartSplineLineSeries1: TLineSeries;
ChartSplineBSplineSeries1: TBSplineSeries;
cbAutoExtentY: TCheckBox;
chAutoExtentYFuncSeries1: TFuncSeries;
chtsColorMap: TChartToolset;
chtsColorMapPanDragTool1: TPanDragTool;
chtsColorMapZoomDragTool1: TZoomDragTool;
@ -42,16 +45,20 @@ type
ListChartSource1: TListChartSource;
PageControl1: TPageControl;
Panel1: TPanel;
pnlAutoExtentY: TPanel;
pnSpline: TPanel;
RandomChartSource1: TRandomChartSource;
iseSplineDegree: TTISpinEdit;
icbSplineRandomX: TTICheckBox;
cbCubic: TTICheckBox;
Timer1: TTimer;
tsAutoExtentY: TTabSheet;
tsSpline: TTabSheet;
tsDomain: TTabSheet;
tsColorMap: TTabSheet;
Splitter1: TSplitter;
UserDefinedChartSource1: TUserDefinedChartSource;
procedure cbAutoExtentYChange(Sender: TObject);
procedure cbDomainChange(Sender: TObject);
procedure cbInterpolateChange(Sender: TObject);
procedure cbMultLegendChange(Sender: TObject);
@ -60,7 +67,11 @@ type
procedure Chart1UserDrawnSeries1Draw(ACanvas: TCanvas; const ARect: TRect);
procedure ChartColorMapColorMapSeries1Calculate(const AX, AY: Double; out
AZ: Double);
procedure chAutoExtentYFuncSeries1Calculate(const AX: Double; out
AY: Double);
procedure iseSplineDegreeChange(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure UserDefinedChartSource1GetChartDataItem(
ASource: TUserDefinedChartSource; AIndex: Integer;
var AItem: TChartDataItem);
@ -78,6 +89,11 @@ uses
{ TForm1 }
procedure TForm1.cbAutoExtentYChange(Sender: TObject);
begin
chAutoExtentYFuncSeries1.ExtentAutoY := cbAutoExtentY.Checked;
end;
procedure TForm1.cbDomainChange(Sender: TObject);
var
i: Integer;
@ -130,6 +146,7 @@ var
b: TDoublePoint = (X: 1; Y: 1);
r: TRect;
begin
Unused(ARect);
r.TopLeft := Chart1.GraphToImage(a);
r.BottomRight := Chart1.GraphToImage(b);
ACanvas.Pen.Mode := pmCopy;
@ -145,11 +162,30 @@ begin
AZ := Sin(10 * Sqr(AX) + 17 * Sqr(AY));
end;
procedure TForm1.chAutoExtentYFuncSeries1Calculate(
const AX: Double; out AY: Double);
begin
AY := Sin(AX * 2) + 3 * Cos(AX * 3) + 2 * Cos(AX * AX * 5);
end;
procedure TForm1.iseSplineDegreeChange(Sender: TObject);
begin
(Sender as TTISpinEdit).EditingDone;
end;
procedure TForm1.PageControl1Change(Sender: TObject);
begin
Timer1.Enabled := PageControl1.ActivePage = tsAutoExtentY;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
with chAutoExtentYFuncSeries1.Extent do begin
XMin := XMin + 0.05;
XMax := XMax + 0.05;
end;
end;
procedure TForm1.UserDefinedChartSource1GetChartDataItem(
ASource: TUserDefinedChartSource; AIndex: Integer; var AItem: TChartDataItem);
begin