You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8859 8e941d3f-bd1b-0410-a28a-d453659cc2b4
225 lines
4.9 KiB
ObjectPascal
225 lines
4.9 KiB
ObjectPascal
unit Unit1;
|
|
|
|
{$IFDEF FPC}
|
|
{$MODE Delphi}
|
|
{$ENDIF}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
|
|
{$IFNDEF FPC}XPMan,{$ENDIF}
|
|
NiceChart;
|
|
|
|
type
|
|
|
|
{ TForm1 }
|
|
|
|
TForm1 = class(TForm)
|
|
CheckBox1: TCheckBox;
|
|
CheckBox2: TCheckBox;
|
|
CheckBox3: TCheckBox;
|
|
CheckBox4: TCheckBox;
|
|
Label1: TLabel;
|
|
Button1: TButton;
|
|
Button2: TButton;
|
|
procedure CheckBox2Click(Sender: TObject);
|
|
procedure CheckBox3Click(Sender: TObject);
|
|
procedure CheckBox4Click(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure Button1Click(Sender: TObject);
|
|
procedure Button2Click(Sender: TObject);
|
|
procedure CheckBox1Click(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
procedure ChartMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
|
public
|
|
{ Public declarations }
|
|
Chart: TNiceChart;
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$IFDEF FPC}
|
|
{$R *.lfm}
|
|
{$ELSE}
|
|
{$R *.dfm}
|
|
{$ENDIF}
|
|
|
|
uses
|
|
Math;
|
|
|
|
procedure TForm1.ChartMouseMove(Sender: TObject; Shift: TShiftState;
|
|
X, Y: Integer);
|
|
var
|
|
ax, ay: Double;
|
|
begin
|
|
if Chart.ClientToChart(X, Y, ax, ay)
|
|
then Label1.Caption := FormatFloat('Mouse position: 0.##', ax) + '; ' + FormatFloat('0.##', ay / 1000)
|
|
else Label1.Caption := 'Out of Chart';
|
|
end;
|
|
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
var
|
|
Series: TNiceSeries;
|
|
begin
|
|
Chart := TNiceChart.Create(Self);
|
|
with Chart do
|
|
begin
|
|
Parent := Self;
|
|
Left := 8;
|
|
Top := 40;
|
|
Width := Self.ClientWidth - 16;
|
|
Height := Self.ClientHeight - 70;
|
|
Anchors := [akLeft, akTop, akRight, akBottom];
|
|
Title := 'Look at me!'#13'I''m a NiceChart!';
|
|
AxisXOnePerValue := True;
|
|
ShowXGrid := False;
|
|
GridColor := clSilver;
|
|
TickLength := 6;
|
|
AxisYScale := 1000;
|
|
OnMouseMove := ChartMouseMove;
|
|
AdjustSize;
|
|
end;
|
|
Chart.BeginUpdate;
|
|
Series := Chart.AddSeries(skBar);
|
|
Series.Caption := 'Revenue';
|
|
with Series do
|
|
begin
|
|
AddXY( 0, 0);
|
|
AddXY(2000, 4904620);
|
|
AddXY(2001, 15086420);
|
|
AddXY(2002, 14696560);
|
|
AddXY(2003, 14263160);
|
|
AddXY(2004, 13711080);
|
|
AddXY(2005, 13018880);
|
|
AddXY(2006, 11901080);
|
|
AddXY(2007, 10592340);
|
|
AddXY(2008, 9750620);
|
|
AddXY(2009, 9007960);
|
|
AddXY(2010, 7980940);
|
|
AddXY(2011, 6164060);
|
|
AddXY(2012, 4182760);
|
|
AddXY(2013, 3026420);
|
|
AddXY(2014, 1907200);
|
|
end;
|
|
Series := Chart.AddSeries(skBar);
|
|
Series.Caption := 'Cash Flow';
|
|
with Series do
|
|
begin
|
|
AddXY( 0, -9435276);
|
|
AddXY(2000, -12884809.79);
|
|
AddXY(2001, 11849628.6);
|
|
AddXY(2002, 8676685.24);
|
|
AddXY(2003, 3856984.44);
|
|
AddXY(2004, 3811447.44);
|
|
AddXY(2005, 686684.1);
|
|
AddXY(2006, 377060.42);
|
|
AddXY(2007, 831488.06);
|
|
AddXY(2008, 1517731.99);
|
|
AddXY(2009, 1431460.27);
|
|
AddXY(2010, 1158463.54);
|
|
AddXY(2011, 737914.59);
|
|
AddXY(2012, 386103.52);
|
|
AddXY(2013, 249675.86);
|
|
AddXY(2014, 119973);
|
|
end;
|
|
Series := Chart.AddSeries(skSmooth);
|
|
Series.Caption := 'Cum. Cash Flow';
|
|
with Series do
|
|
begin
|
|
AddXY( 0, -9435276);
|
|
AddXY(2000, -22320085.79);
|
|
AddXY(2001, -10470457.19);
|
|
AddXY(2002, -1793771.95);
|
|
AddXY(2003, 2063212.49);
|
|
AddXY(2004, 5874659.93);
|
|
AddXY(2005, 6561344.03);
|
|
AddXY(2006, 6938404.46);
|
|
AddXY(2007, 7769892.52);
|
|
AddXY(2008, 9287624.51);
|
|
AddXY(2009, 10719084.78);
|
|
AddXY(2010, 11877548.32);
|
|
AddXY(2011, 12615462.91);
|
|
AddXY(2012, 13001566.43);
|
|
AddXY(2013, 13251242.29);
|
|
AddXY(2014, 13371215.29);
|
|
LineWidth := 3;
|
|
end;
|
|
Chart.EndUpdate;
|
|
|
|
Label1.Caption := '';
|
|
end;
|
|
|
|
procedure TForm1.CheckBox1Click(Sender: TObject);
|
|
begin
|
|
if Checkbox1.Checked then
|
|
Chart.AxisLineWidth := 3
|
|
else
|
|
Chart.AxisLineWidth := 1;
|
|
end;
|
|
|
|
procedure TForm1.CheckBox2Click(Sender: TObject);
|
|
begin
|
|
Chart.ShowXGrid := Checkbox2.Checked;
|
|
end;
|
|
|
|
procedure TForm1.CheckBox3Click(Sender: TObject);
|
|
begin
|
|
Chart.ShowYGrid := Checkbox3.Checked;
|
|
end;
|
|
|
|
procedure TForm1.CheckBox4Click(Sender: TObject);
|
|
begin
|
|
Chart.ShowXAxisLine := Checkbox4.Checked;
|
|
end;
|
|
|
|
procedure TForm1.FormDestroy(Sender: TObject);
|
|
begin
|
|
Chart.Free;
|
|
end;
|
|
|
|
procedure TForm1.Button1Click(Sender: TObject);
|
|
begin
|
|
Chart.Monochrome := not Chart.Monochrome;
|
|
if Chart.Monochrome
|
|
then Button1.Caption := 'Color'
|
|
else Button1.Caption := 'Monochrome';
|
|
end;
|
|
|
|
procedure TForm1.Button2Click(Sender: TObject);
|
|
var
|
|
fn: String;
|
|
{$IFDEF FPC}
|
|
bmp: TBitmap;
|
|
{$ELSE}
|
|
m: TMetafile;
|
|
{$ENDIF}
|
|
begin
|
|
{$IFDEF FPC}
|
|
fn := 'test.bmp';
|
|
bmp := Chart.CreateBitmap(Chart.ClientWidth, Chart.ClientHeight);
|
|
try
|
|
bmp.SaveToFile(fn);
|
|
finally
|
|
bmp.Free;
|
|
end;
|
|
{$ELSE}
|
|
fn := 'test.emf';
|
|
m := Chart.CreateMetafile;
|
|
try
|
|
m.Enhanced := True;
|
|
m.SaveToFile(fn);
|
|
finally
|
|
m.Free;
|
|
end;
|
|
{$ENDIF}
|
|
ShowMessage('Saved to "' + fn + '".');
|
|
end;
|
|
|
|
end.
|