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.