File: Main.pas

package info (click to toggle)
lazarus 2.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 214,460 kB
  • sloc: pascal: 1,862,622; xml: 265,709; cpp: 56,595; sh: 3,008; java: 609; makefile: 535; perl: 297; sql: 222; ansic: 137
file content (101 lines) | stat: -rw-r--r-- 2,512 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
unit Main;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, TAGraph, TAChartImageList, TASources,
  TAFuncSeries, Forms, Controls, Graphics, Dialogs, ComCtrls;

type

  { TfrmMain }

  TfrmMain = class(TForm)
    Chart1: TChart;
    Chart1FuncSeries1: TFuncSeries;
    Chart1FuncSeries2: TFuncSeries;
    ChartImageList: TChartImageList;
    ToolbarImages: TImageList;
    ListView1: TListView;
    RandomChartSource1: TRandomChartSource;
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    tbAdd: TToolButton;
    tbQuit: TToolButton;
    tbSep1: TToolButton;
    procedure Chart1FuncSeries1Calculate(const AX: Double; out AY: Double);
    procedure Chart1FuncSeries2Calculate(const AX: Double; out AY: Double);
    procedure ChartImageListPopulate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure tbAddClick(Sender: TObject);
    procedure tbQuitClick(Sender: TObject);
  end;

var
  frmMain: TfrmMain;

implementation

uses
  LCLIntf, TATypes, TASeries;

{$R *.lfm}

{ TfrmMain }

procedure TfrmMain.Chart1FuncSeries1Calculate(const AX: Double; out AY: Double);
begin
  AY := Sin(AX);
end;

procedure TfrmMain.Chart1FuncSeries2Calculate(const AX: Double; out AY: Double);
begin
  AY := Cos(AX);
end;

procedure TfrmMain.ChartImageListPopulate(Sender: TObject);
begin
  with ChartImageList do
    StatusBar1.SimpleText := Format(
      'Now %d images in image list. ' +
      'Among them %d series images starting at index %d',
      [Count, SeriesCount, FirstSeriesIndex]);
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  ChartImageList.Chart := nil;
  ChartImageList.AddImages(ToolbarImages);
  ChartImageList.Chart := Chart1;
end;

procedure TfrmMain.tbAddClick(Sender: TObject);
var
  series: TLineSeries;
  sty: Integer;
begin
  RandomChartSource1.RandSeed := Random(MaxInt);
  series := TLineSeries.Create(Self);
  series.SeriesColor := RGB(Random(256), Random(256), Random(256));
  series.Pointer.Brush.Color := series.SeriesColor;
  sty := Random(Ord(High(TSeriesPointerStyle)) + 5);
  series.ShowPoints := sty <= Ord(High(TSeriesPointerStyle));
  if series.ShowPoints then
    series.Pointer.Style := TSeriesPointerStyle(sty);
  series.ListSource.CopyFrom(RandomChartSource1);
  Chart1.AddSeries(series);
  with Listview1.Items.Add do begin
    Caption := Format('run item %d', [ListView1.Items.Count]);
    ImageIndex := ChartImageList.Count - 1;
  end;
end;

procedure TfrmMain.tbQuitClick(Sender: TObject);
begin
  Close;
end;

end.