mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-02 03:42:01 +02:00
TAChart: Add demo for AxisClickTool
(cherry picked from commit 0642c65d04
)
This commit is contained in:
parent
492dc38099
commit
8b8bcd3a51
@ -0,0 +1,78 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<Version Value="12"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<General>
|
||||||
|
<SessionStorage Value="InProjectDir"/>
|
||||||
|
<Title Value="ChartAxisClickTool_Demo"/>
|
||||||
|
<Scaled Value="True"/>
|
||||||
|
<ResourceType Value="res"/>
|
||||||
|
<UseXPManifest Value="True"/>
|
||||||
|
<XPManifest>
|
||||||
|
<DpiAware Value="True"/>
|
||||||
|
</XPManifest>
|
||||||
|
<Icon Value="0"/>
|
||||||
|
</General>
|
||||||
|
<BuildModes>
|
||||||
|
<Item Name="Default" Default="True"/>
|
||||||
|
</BuildModes>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
<UseFileFilters Value="True"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<FormatVersion Value="2"/>
|
||||||
|
</RunParams>
|
||||||
|
<RequiredPackages>
|
||||||
|
<Item>
|
||||||
|
<PackageName Value="TAChartLazarusPkg"/>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<PackageName Value="LCL"/>
|
||||||
|
</Item>
|
||||||
|
</RequiredPackages>
|
||||||
|
<Units>
|
||||||
|
<Unit>
|
||||||
|
<Filename Value="ChartAxisClickTool_Demo.lpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit>
|
||||||
|
<Unit>
|
||||||
|
<Filename Value="main.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="Form1"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
</Unit>
|
||||||
|
</Units>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Target>
|
||||||
|
<Filename Value="ChartAxisClickTool_Demo"/>
|
||||||
|
</Target>
|
||||||
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||||
|
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||||
|
</SearchPaths>
|
||||||
|
<Linking>
|
||||||
|
<Debugging>
|
||||||
|
<DebugInfoType Value="dsDwarf3"/>
|
||||||
|
</Debugging>
|
||||||
|
</Linking>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<Exceptions>
|
||||||
|
<Item>
|
||||||
|
<Name Value="EAbort"/>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<Name Value="ECodetoolError"/>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<Name Value="EFOpenError"/>
|
||||||
|
</Item>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
@ -0,0 +1,25 @@
|
|||||||
|
program ChartAxisClickTool_Demo;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IFDEF UNIX}
|
||||||
|
cthreads,
|
||||||
|
{$ENDIF}
|
||||||
|
{$IFDEF HASAMIGA}
|
||||||
|
athreads,
|
||||||
|
{$ENDIF}
|
||||||
|
Interfaces, // this includes the LCL widgetset
|
||||||
|
Forms, tachartlazaruspkg, main
|
||||||
|
{ you can add units after this };
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
|
||||||
|
begin
|
||||||
|
RequireDerivedFormResource:=True;
|
||||||
|
Application.Scaled:=True;
|
||||||
|
Application.Initialize;
|
||||||
|
Application.CreateForm(TForm1, Form1);
|
||||||
|
Application.Run;
|
||||||
|
end.
|
||||||
|
|
266
components/tachart/demo/axisclicktool/main.lfm
Normal file
266
components/tachart/demo/axisclicktool/main.lfm
Normal file
@ -0,0 +1,266 @@
|
|||||||
|
object Form1: TForm1
|
||||||
|
Left = 381
|
||||||
|
Height = 401
|
||||||
|
Top = 250
|
||||||
|
Width = 729
|
||||||
|
Caption = 'Chart Axis Click Tool Demo'
|
||||||
|
ClientHeight = 401
|
||||||
|
ClientWidth = 729
|
||||||
|
LCLVersion = '3.99.0.0'
|
||||||
|
object Chart: TChart
|
||||||
|
Left = 0
|
||||||
|
Height = 353
|
||||||
|
Top = 0
|
||||||
|
Width = 729
|
||||||
|
AxisList = <
|
||||||
|
item
|
||||||
|
Grid.Color = 12040191
|
||||||
|
Grid.Style = psSolid
|
||||||
|
AtDataOnly = True
|
||||||
|
AxisPen.Color = clRed
|
||||||
|
AxisPen.Visible = True
|
||||||
|
Group = 1
|
||||||
|
Marks.LabelFont.Color = clRed
|
||||||
|
Marks.AtDataOnly = True
|
||||||
|
Marks.LabelBrush.Style = bsClear
|
||||||
|
Minors = <>
|
||||||
|
Title.LabelFont.Color = clRed
|
||||||
|
Title.LabelFont.Orientation = 900
|
||||||
|
Title.Visible = True
|
||||||
|
Title.Caption = 'Left axis #1'
|
||||||
|
Title.LabelBrush.Style = bsClear
|
||||||
|
Title.PositionOnMarks = True
|
||||||
|
Transformations = RedAxisTransformations
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Grid.Color = clSilver
|
||||||
|
Grid.Style = psSolid
|
||||||
|
Alignment = calBottom
|
||||||
|
Marks.LabelBrush.Style = bsClear
|
||||||
|
Minors = <>
|
||||||
|
Title.Visible = True
|
||||||
|
Title.Caption = 'Bottom axis'
|
||||||
|
Title.LabelBrush.Style = bsClear
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Grid.Color = clSilver
|
||||||
|
Grid.Visible = False
|
||||||
|
Alignment = calRight
|
||||||
|
AxisPen.Visible = True
|
||||||
|
Marks.LabelBrush.Style = bsClear
|
||||||
|
Minors = <>
|
||||||
|
Title.LabelFont.Orientation = 450
|
||||||
|
Title.Visible = True
|
||||||
|
Title.Caption = 'Right axis'
|
||||||
|
Title.LabelBrush.Style = bsClear
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Grid.Color = 16765650
|
||||||
|
Grid.Style = psSolid
|
||||||
|
AtDataOnly = True
|
||||||
|
AxisPen.Color = clBlue
|
||||||
|
AxisPen.Visible = True
|
||||||
|
Group = 1
|
||||||
|
Marks.LabelFont.Color = clBlue
|
||||||
|
Marks.AtDataOnly = True
|
||||||
|
Marks.LabelBrush.Style = bsClear
|
||||||
|
Minors = <>
|
||||||
|
Title.LabelFont.Color = clBlue
|
||||||
|
Title.LabelFont.Orientation = 900
|
||||||
|
Title.Visible = True
|
||||||
|
Title.Caption = 'Left axis #2'
|
||||||
|
Title.LabelBrush.Style = bsClear
|
||||||
|
Title.PositionOnMarks = True
|
||||||
|
Transformations = BlueAxisTransformations
|
||||||
|
end>
|
||||||
|
Frame.Visible = False
|
||||||
|
Title.Text.Strings = (
|
||||||
|
'Click on various parts of the axes'
|
||||||
|
'Colliding parts are detected in the order of the series (left#1-bottom-right-left#2)'
|
||||||
|
)
|
||||||
|
Title.Visible = True
|
||||||
|
Toolset = ChartToolset
|
||||||
|
Align = alClient
|
||||||
|
object RedSeries: TLineSeries
|
||||||
|
AxisIndexY = 0
|
||||||
|
LinePen.Color = clRed
|
||||||
|
Source = RedChartSource
|
||||||
|
end
|
||||||
|
object BlueSeries: TLineSeries
|
||||||
|
AxisIndexY = 3
|
||||||
|
LinePen.Color = clBlue
|
||||||
|
Source = BlueChartSource
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object BottomPanel: TPanel
|
||||||
|
Left = 6
|
||||||
|
Height = 36
|
||||||
|
Top = 359
|
||||||
|
Width = 717
|
||||||
|
Align = alBottom
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
BevelOuter = bvNone
|
||||||
|
ClientHeight = 36
|
||||||
|
ClientWidth = 717
|
||||||
|
TabOrder = 1
|
||||||
|
object Label1: TLabel
|
||||||
|
AnchorSideLeft.Control = BottomPanel
|
||||||
|
AnchorSideTop.Control = BottomPanel
|
||||||
|
Left = 0
|
||||||
|
Height = 15
|
||||||
|
Top = 0
|
||||||
|
Width = 65
|
||||||
|
Caption = 'Clicked axis:'
|
||||||
|
end
|
||||||
|
object Label2: TLabel
|
||||||
|
AnchorSideLeft.Control = BottomPanel
|
||||||
|
AnchorSideTop.Control = Label1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 0
|
||||||
|
Height = 15
|
||||||
|
Top = 19
|
||||||
|
Width = 66
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
Caption = 'Clicked part:'
|
||||||
|
end
|
||||||
|
object lblClickedAxis: TLabel
|
||||||
|
AnchorSideLeft.Control = Label1
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Label1
|
||||||
|
Left = 73
|
||||||
|
Height = 15
|
||||||
|
Top = 0
|
||||||
|
Width = 36
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
Caption = '(none)'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object lblClickedAxisPart: TLabel
|
||||||
|
AnchorSideLeft.Control = Label1
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Label2
|
||||||
|
Left = 73
|
||||||
|
Height = 15
|
||||||
|
Top = 19
|
||||||
|
Width = 36
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
Caption = '(none)'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object cbShowGrid_LeftAxis2: TCheckBox
|
||||||
|
AnchorSideLeft.Control = Bevel1
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Label1
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 360
|
||||||
|
Height = 19
|
||||||
|
Top = -2
|
||||||
|
Width = 130
|
||||||
|
Caption = 'Show left axis #2 grid'
|
||||||
|
Checked = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 0
|
||||||
|
OnChange = cbShowGrid_LeftAxis2Change
|
||||||
|
end
|
||||||
|
object Bevel1: TBevel
|
||||||
|
AnchorSideLeft.Control = BottomPanel
|
||||||
|
AnchorSideLeft.Side = asrCenter
|
||||||
|
AnchorSideTop.Control = BottomPanel
|
||||||
|
Left = 357
|
||||||
|
Height = 26
|
||||||
|
Top = 0
|
||||||
|
Width = 3
|
||||||
|
Shape = bsSpacer
|
||||||
|
end
|
||||||
|
object cbShowGrid_LeftAxis1: TCheckBox
|
||||||
|
AnchorSideLeft.Control = Bevel1
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Label2
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 360
|
||||||
|
Height = 19
|
||||||
|
Top = 17
|
||||||
|
Width = 130
|
||||||
|
Caption = 'Show left axis #1 grid'
|
||||||
|
Checked = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 1
|
||||||
|
OnChange = cbShowGrid_LeftAxis2Change
|
||||||
|
end
|
||||||
|
object cbShowGrid_RightAxis: TCheckBox
|
||||||
|
AnchorSideLeft.Control = cbShowGrid_LeftAxis2
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Label1
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 506
|
||||||
|
Height = 19
|
||||||
|
Top = -2
|
||||||
|
Width = 122
|
||||||
|
BorderSpacing.Left = 16
|
||||||
|
Caption = 'Show right axis grid'
|
||||||
|
TabOrder = 2
|
||||||
|
OnChange = cbShowGrid_LeftAxis2Change
|
||||||
|
end
|
||||||
|
object cbShowGrid_BottomAxis: TCheckBox
|
||||||
|
AnchorSideLeft.Control = cbShowGrid_LeftAxis2
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Label2
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 506
|
||||||
|
Height = 19
|
||||||
|
Top = 17
|
||||||
|
Width = 137
|
||||||
|
BorderSpacing.Left = 16
|
||||||
|
Caption = 'Show bottom axis grid'
|
||||||
|
Checked = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 3
|
||||||
|
OnChange = cbShowGrid_LeftAxis2Change
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object ChartToolset: TChartToolset
|
||||||
|
Left = 368
|
||||||
|
Top = 128
|
||||||
|
object ChartToolsetAxisClickTool1: TAxisClickTool
|
||||||
|
Shift = [ssLeft]
|
||||||
|
OnClick = ChartToolsetAxisClickTool1Click
|
||||||
|
end
|
||||||
|
object ChartToolsetUserDefinedTool1: TUserDefinedTool
|
||||||
|
Shift = [ssLeft]
|
||||||
|
OnAfterMouseDown = ChartToolsetUserDefinedTool1AfterMouseDown
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object RedChartSource: TRandomChartSource
|
||||||
|
PointsNumber = 11
|
||||||
|
RandSeed = 108757768
|
||||||
|
XMax = 1
|
||||||
|
YMax = 1
|
||||||
|
Left = 240
|
||||||
|
Top = 216
|
||||||
|
end
|
||||||
|
object RedAxisTransformations: TChartAxisTransformations
|
||||||
|
Left = 104
|
||||||
|
Top = 216
|
||||||
|
object RedAxisTransformationsAutoScaleAxisTransform: TAutoScaleAxisTransform
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object BlueAxisTransformations: TChartAxisTransformations
|
||||||
|
Left = 104
|
||||||
|
Top = 39
|
||||||
|
object BlueAxisTransformationsAutoScaleAxisTransform: TAutoScaleAxisTransform
|
||||||
|
MaxValue = 2
|
||||||
|
MinValue = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object BlueChartSource: TRandomChartSource
|
||||||
|
PointsNumber = 21
|
||||||
|
RandSeed = 1002808897
|
||||||
|
XMax = 1
|
||||||
|
YMax = 2
|
||||||
|
Left = 240
|
||||||
|
Top = 39
|
||||||
|
end
|
||||||
|
end
|
100
components/tachart/demo/axisclicktool/main.pas
Normal file
100
components/tachart/demo/axisclicktool/main.pas
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
unit main;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
|
||||||
|
TAGraph, TATools, TAChartAxis, TASeries, TASources, TATransformations, Types;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TForm1 }
|
||||||
|
|
||||||
|
TForm1 = class(TForm)
|
||||||
|
Bevel1: TBevel;
|
||||||
|
Chart: TChart;
|
||||||
|
cbShowGrid_LeftAxis2: TCheckBox;
|
||||||
|
cbShowGrid_LeftAxis1: TCheckBox;
|
||||||
|
cbShowGrid_RightAxis: TCheckBox;
|
||||||
|
cbShowGrid_BottomAxis: TCheckBox;
|
||||||
|
RedSeries: TLineSeries;
|
||||||
|
BlueSeries: TLineSeries;
|
||||||
|
RedAxisTransformations: TChartAxisTransformations;
|
||||||
|
RedAxisTransformationsAutoScaleAxisTransform: TAutoScaleAxisTransform;
|
||||||
|
BlueAxisTransformations: TChartAxisTransformations;
|
||||||
|
BlueAxisTransformationsAutoScaleAxisTransform: TAutoScaleAxisTransform;
|
||||||
|
ChartToolset: TChartToolset;
|
||||||
|
ChartToolsetAxisClickTool1: TAxisClickTool;
|
||||||
|
ChartToolsetUserDefinedTool1: TUserDefinedTool;
|
||||||
|
Label1: TLabel;
|
||||||
|
Label2: TLabel;
|
||||||
|
lblClickedAxis: TLabel;
|
||||||
|
lblClickedAxisPart: TLabel;
|
||||||
|
BottomPanel: TPanel;
|
||||||
|
RedChartSource: TRandomChartSource;
|
||||||
|
BlueChartSource: TRandomChartSource;
|
||||||
|
procedure ChartToolsetAxisClickTool1Click(ASender: TChartTool;
|
||||||
|
Axis: TChartAxis; AHitInfo: TChartAxisHitTests);
|
||||||
|
procedure ChartToolsetUserDefinedTool1AfterMouseDown(ATool: TChartTool;
|
||||||
|
APoint: TPoint);
|
||||||
|
procedure cbShowGrid_LeftAxis2Change(Sender: TObject);
|
||||||
|
private
|
||||||
|
|
||||||
|
public
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
Form1: TForm1;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
{ TForm1 }
|
||||||
|
|
||||||
|
procedure TForm1.ChartToolsetAxisClickTool1Click(ASender: TChartTool;
|
||||||
|
Axis: TChartAxis; AHitInfo: TChartAxisHitTests);
|
||||||
|
var
|
||||||
|
s: String;
|
||||||
|
begin
|
||||||
|
s := '';
|
||||||
|
if ahtGrid in AHitInfo then s := s + ', Axis grid';
|
||||||
|
if ahtTitle in AHitInfo then s := s + ', Axis title';
|
||||||
|
if ahtLine in AHitInfo then s := s + ', Axis line';
|
||||||
|
if ahtLabels in AHitInfo then s := s + ', Axis labels';
|
||||||
|
if ahtAxisStart in AHitInfo then s := s + ', begin of axis';
|
||||||
|
if ahtAxisCenter in AHitInfo then s := s + ', center of axis';
|
||||||
|
if ahtAxisEnd in AHitInfo then s := s + ', end of axis';
|
||||||
|
if s <> '' then
|
||||||
|
begin
|
||||||
|
Delete(s, 1, 2);
|
||||||
|
lblClickedAxis.Caption := Axis.Title.Caption;
|
||||||
|
lblClickedAxisPart.Caption := s;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TForm1.ChartToolsetUserDefinedTool1AfterMouseDown(ATool: TChartTool;
|
||||||
|
APoint: TPoint);
|
||||||
|
begin
|
||||||
|
lblClickedAxis.Caption := '(none)';
|
||||||
|
lblClickedAxisPart.Caption := '(none)';
|
||||||
|
ATool.Handled;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TForm1.cbShowGrid_LeftAxis2Change(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if Sender = cbShowGrid_LeftAxis2 then
|
||||||
|
Chart.LeftAxis.Grid.Visible := TCheckbox(Sender).Checked
|
||||||
|
else if Sender = cbShowGrid_LeftAxis1 then
|
||||||
|
Chart.AxisList[3].Grid.Visible := TCheckbox(Sender).Checked
|
||||||
|
else if Sender = cbShowGrid_RightAxis then
|
||||||
|
Chart.AxisList[2].Grid.Visible := TCheckbox(Sender).Checked
|
||||||
|
else if Sender = cbShowGrid_BottomAxis then
|
||||||
|
Chart.BottomAxis.Grid.Visible := TCheckbox(Sender).Checked;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user