1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
unit Main;
{$mode objfpc}{$H+}
interface
uses
Classes, ExtCtrls, PrintersDlgs, StdCtrls, SysUtils, FileUtil, Forms,
Controls, Graphics, Dialogs, TAGraph, TASeries, TASources;
type
{ TForm1 }
TForm1 = class(TForm)
PrintScaledPen: TButton;
Chart1: TChart;
Chart1LineSeries1: TLineSeries;
Panel1: TPanel;
Print: TButton;
PrintCanvas: TButton;
PrintDialog1: TPrintDialog;
RandomChartSource1: TRandomChartSource;
procedure PrintClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses
OSPrinters, TAPrint, Printers;
{$R *.lfm}
{ TForm1 }
procedure TForm1.PrintClick(Sender: TObject);
const
MARGIN = 10;
var
r: TRect;
d: Integer;
begin
if not PrintDialog1.Execute then exit;
Printer.BeginDoc;
try
r := Rect(0, 0, Printer.PageWidth, Printer.PageHeight div 2);
d := r.Right - r.Left;
r.Left += d div MARGIN;
r.Right -= d div MARGIN;
d := r.Bottom - r.Top;
r.Top += d div MARGIN;
r.Bottom -= d div MARGIN;
if Sender = PrintCanvas then
Chart1.PaintOnCanvas(Printer.Canvas, r)
else
Chart1.Draw(TPrinterDrawer.Create(Printer, (Sender = PrintScaledPen)), r);
finally
Printer.EndDoc;
end;
end;
end.
|