lazarus/components/tachart/demo/nan/Main.pas
2011-10-28 11:41:28 +00:00

81 lines
1.6 KiB
ObjectPascal

unit Main;
{$mode objfpc}{$H+}
interface
uses
CheckLst, Classes, ExtCtrls, SysUtils, FileUtil, Forms, Controls, Graphics,
Dialogs, TAGraph, TASeries, TASources;
type
TForm1 = class(TForm)
Chart1: TChart;
Chart1AreaSeries1: TAreaSeries;
Chart1BarSeries1: TBarSeries;
Chart1LineSeries1: TLineSeries;
Chart1PieSeries1: TPieSeries;
clbNans: TCheckListBox;
lcs1: TListChartSource;
lcs2: TListChartSource;
Panel2: TPanel;
rgXY: TRadioGroup;
rgSeriesType: TRadioGroup;
procedure clbNansItemClick(Sender: TObject; Index: integer);
procedure FormCreate(Sender: TObject);
procedure rgSeriesTypeClick(Sender: TObject);
procedure rgXYClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
uses
Math, TAChartUtils;
{ TForm1 }
procedure TForm1.clbNansItemClick(Sender: TObject; Index: integer);
begin
if rgXY.ItemIndex = 0 then
lcs1.SetXValue(Index, IfThen(clbNans.Checked[Index], Nan, lcs2[Index]^.X))
else
lcs1.SetYValue(Index, IfThen(clbNans.Checked[Index], Nan, lcs2[Index]^.Y));
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
Randomize;
for i := 1 to 20 do begin
lcs1.Add(i, Random(100) / 50);
clbNans.Items.Add(IntToStr(i));
end;
lcs2.CopyFrom(lcs1);
end;
procedure TForm1.rgSeriesTypeClick(Sender: TObject);
var
s: TBasicChartSeries;
begin
for s in Chart1.Series do
s.Active := s.Index = rgSeriesType.ItemIndex;
end;
procedure TForm1.rgXYClick(Sender: TObject);
var
i: Integer;
begin
lcs1.CopyFrom(lcs2);
for i := 0 to lcs1.Count - 1 do
clbNansItemClick(nil, i);
end;
end.