mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-03 04:23:45 +02:00
81 lines
1.6 KiB
ObjectPascal
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.
|
|
|