Files
lazarus-ccr/components/nicechart/demo/common/Unit1.pas
wp_xxyyzz 60447bcbfb NiceChart: Implement save as bitmap.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8859 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2023-06-26 18:54:40 +00:00

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.