mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-05 04:03:46 +02:00
257 lines
6.1 KiB
ObjectPascal
257 lines
6.1 KiB
ObjectPascal
unit unit1;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
|
TAGraph, TASeries, Buttons, StdCtrls, Spin;
|
|
|
|
type
|
|
{ TForm1 }
|
|
|
|
TForm1 = class(TForm)
|
|
btnClearArea: TButton;
|
|
btnClearBar: TButton;
|
|
btnClearLine: TButton;
|
|
btnClearPie: TButton;
|
|
btnAddBar: TButton;
|
|
btnAddPie: TButton;
|
|
btnAddLine: TButton;
|
|
btnAddArea: TButton;
|
|
cbShowAxisTitles: TCheckBox;
|
|
cbShowReticule: TCheckBox;
|
|
Chart1: TChart;
|
|
cbBottomAxis: TCheckBox;
|
|
cbLeftAxis: TCheckBox;
|
|
cbTitle: TCheckBox;
|
|
cbFooter: TCheckBox;
|
|
cbInverted: TCheckBox;
|
|
cbLegend: TCheckBox;
|
|
cbShowGridCheckBox: TCheckBox;
|
|
cbShowVertReticule: TCheckBox;
|
|
Chart1LineHor: TLine;
|
|
Chart1LineVert: TLine;
|
|
cbMarkStyle: TComboBox;
|
|
lblAddCount: TLabel;
|
|
lblAdd: TLabel;
|
|
lblMarkStyle: TLabel;
|
|
lblClear: TLabel;
|
|
Panel1: TPanel;
|
|
edAddCount: TSpinEdit;
|
|
procedure btnClearAreaClick(Sender: TObject);
|
|
procedure btnClearBarClick(Sender: TObject);
|
|
procedure btnClearLineClick(Sender: TObject);
|
|
procedure btnClearPieClick(Sender: TObject);
|
|
procedure cbInvertedChange(Sender: TObject);
|
|
procedure btnAddAreaClick(Sender: TObject);
|
|
procedure btnAddBarClick(Sender: TObject);
|
|
procedure btnAddLineClick(Sender: TObject);
|
|
procedure btnAddPieClick(Sender: TObject);
|
|
procedure cbBottomAxisChange(Sender: TObject);
|
|
procedure cbLeftAxisChange(Sender: TObject);
|
|
procedure cbShowAxisTitlesChange(Sender: TObject);
|
|
procedure cbShowReticuleChange(Sender: TObject);
|
|
procedure cbShowVertReticuleChange(Sender: TObject);
|
|
procedure cbTitleChange(Sender: TObject);
|
|
procedure cbFooterChange(Sender: TObject);
|
|
procedure cbLegendChange(Sender: TObject);
|
|
procedure cbShowGridCheckBoxChange(Sender: TObject);
|
|
private
|
|
FArea: TAreaSeries;
|
|
FBar: TBarSeries;
|
|
FLine: TSerie;
|
|
FPie: TPieSeries;
|
|
x, y, x1, y1, x3, y3: Double;
|
|
procedure InitBar;
|
|
procedure InitLine;
|
|
procedure InitPie;
|
|
procedure InitArea;
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
uses
|
|
TAChartUtils;
|
|
|
|
{ TForm1 }
|
|
|
|
procedure TForm1.btnAddAreaClick(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
begin
|
|
if FArea = nil then InitArea;
|
|
for i := 1 to edAddCount.Value do begin
|
|
X3 := X3 + 1;
|
|
if random(2) >= 0.7 then Y3 := Y3 + random(5)
|
|
else if random(2) >= 0.7 then Y3 := 0
|
|
else Y3 := Y3 - random(5);
|
|
FArea.AddXY(x3, y3, '', clTAColor);
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.btnAddBarClick(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
begin
|
|
if FBar = nil then InitBar;
|
|
FBar.MarksStyle := TSeriesMarksStyle(cbMarkStyle.ItemIndex);
|
|
for i := 1 to edAddCount.Value do begin
|
|
FBar.AddXY(x, y, '', clRed);
|
|
X := X + 1;
|
|
if random(2) >= 0.7 then Y := Y + random(5)
|
|
else if random(2) >= 0.7 then Y := 0
|
|
else Y := Y - random(5);
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.btnAddLineClick(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
begin
|
|
if FLine = nil then InitLine;
|
|
for i := 1 to edAddCount.Value do begin
|
|
FLine.AddXY(x1, y1, '', clGreen);
|
|
X1 := X1 + 1.5;
|
|
if random(2) >= 0.5 then Y1 := Y1 + random(10)
|
|
else Y1 := Y1 - random(5);
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.btnAddPieClick(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
begin
|
|
if FPie = nil then InitPie;
|
|
FPie.MarksStyle := TSeriesMarksStyle(cbMarkStyle.ItemIndex);
|
|
for i := 1 to edAddCount.Value do begin
|
|
FPie.AddPie(3.4234235235, 'sde21312', clTAColor);
|
|
FPie.AddPie(0.2323, 'adassssssdddddd', clTAColor);
|
|
FPie.AddPie(30, 'filipe romao', clTAColor);
|
|
FPie.AddPie(40, '234eds sa', clTAColor);
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.btnClearAreaClick(Sender: TObject);
|
|
begin
|
|
FreeAndNil(FArea);
|
|
end;
|
|
|
|
procedure TForm1.btnClearBarClick(Sender: TObject);
|
|
begin
|
|
FreeAndNil(FBar);
|
|
end;
|
|
|
|
procedure TForm1.btnClearLineClick(Sender: TObject);
|
|
begin
|
|
FreeAndNil(FLine);
|
|
end;
|
|
|
|
procedure TForm1.btnClearPieClick(Sender: TObject);
|
|
begin
|
|
FreeAndNil(FPie);
|
|
end;
|
|
|
|
procedure TForm1.cbBottomAxisChange(Sender: TObject);
|
|
begin
|
|
Chart1.BottomAxis.Visible := cbBottomAxis.Checked;
|
|
end;
|
|
|
|
procedure TForm1.cbFooterChange(Sender: TObject);
|
|
begin
|
|
Chart1.Foot.Visible := cbFooter.Checked;
|
|
end;
|
|
|
|
procedure TForm1.cbInvertedChange(Sender: TObject);
|
|
begin
|
|
Chart1.BottomAxis.Inverted := cbInverted.Checked;
|
|
Chart1.LeftAxis.Inverted := cbInverted.Checked;
|
|
end;
|
|
|
|
procedure TForm1.cbLegendChange(Sender: TObject);
|
|
begin
|
|
Chart1.Legend.Visible := cbLegend.Checked;
|
|
end;
|
|
|
|
procedure TForm1.cbShowAxisTitlesChange(Sender: TObject);
|
|
begin
|
|
with Chart1.BottomAxis.Title do
|
|
if cbShowAxisTitles.Checked then Caption := 'X axis' else Caption := '';
|
|
with Chart1.LeftAxis.Title do
|
|
if cbShowAxisTitles.Checked then Caption := 'Y axis' else Caption := '';
|
|
end;
|
|
|
|
procedure TForm1.cbShowGridCheckBoxChange(Sender: TObject);
|
|
begin
|
|
Chart1.LeftAxis.Grid.Visible := cbShowGridCheckBox.Checked;
|
|
Chart1.BottomAxis.Grid.Visible := cbShowGridCheckBox.Checked;
|
|
end;
|
|
|
|
procedure TForm1.cbShowReticuleChange(Sender: TObject);
|
|
begin
|
|
Chart1.ShowReticule := cbShowReticule.Checked;
|
|
end;
|
|
|
|
procedure TForm1.cbShowVertReticuleChange(Sender: TObject);
|
|
begin
|
|
Chart1.ShowVerticalReticule := cbShowVertReticule.Checked;
|
|
end;
|
|
|
|
procedure TForm1.cbLeftAxisChange(Sender: TObject);
|
|
begin
|
|
Chart1.LeftAxis.Visible := cbLeftAxis.Checked;
|
|
end;
|
|
|
|
procedure TForm1.cbTitleChange(Sender: TObject);
|
|
begin
|
|
Chart1.Title.Visible := cbTitle.Checked;
|
|
end;
|
|
|
|
procedure TForm1.InitArea;
|
|
begin
|
|
FArea := TAreaSeries.Create(Chart1);
|
|
FArea.SeriesColor := clFuchsia;
|
|
FArea.Title := 'area';
|
|
//FArea.Stairs := true;
|
|
FArea.InvertedStairs := false;
|
|
Chart1.AddSeries(FArea);
|
|
end;
|
|
|
|
procedure TForm1.InitBar;
|
|
begin
|
|
FBar := TBarSeries.Create(Chart1);
|
|
FBar.Title := 'bars';
|
|
FBar.SeriesColor := clGreen;
|
|
Chart1.AddSeries(FBar);
|
|
end;
|
|
|
|
procedure TForm1.InitLine;
|
|
begin
|
|
FLine := TSerie.Create(Chart1);
|
|
FLine.ShowLines := true;
|
|
FLine.ShowPoints := true;
|
|
FLine.Pointer.Style := psRectangle;
|
|
FLine.Title := 'line';
|
|
FLine.SeriesColor := clRed;
|
|
Chart1.AddSeries(FLine);
|
|
end;
|
|
|
|
procedure TForm1.InitPie;
|
|
begin
|
|
FPie := TPieSeries.Create(Chart1);
|
|
FPie.Title := 'pie';
|
|
FPie.LabelBackgroundColor := $80FFFF;
|
|
FPie.LabelToPieLinkColor := clCream;
|
|
Chart1.AddSeries(FPie);
|
|
end;
|
|
|
|
initialization
|
|
{$I unit1.lrs}
|
|
|
|
end.
|
|
|