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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs,
Printers,
StdCtrls, ExtCtrls,
PrintersDlgs;
type
{ TForm1 }
TForm1 = class(TForm)
DlgPrint: TPrintDialog;
Button1: TButton;
Image1: TImage;
Pnlresultat: TPanel;
procedure Button1Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
LPrinter : TPrinter;
LBitMap : TBitMap;
nw,nh : Integer;
Procedure KeepAspectRatio(Const SrcW, SrcH: Integer; Var NewWidth, NewHeight: Integer);
Var
w, h: Integer;
Begin
W := NewWidth;
H := newHeight;
H:=(SrcH*W) div SrcW;
if (H>newHeight) then
begin
H:=newHeight;
W:=(SrcW*H) div SrcH;
end;
NewWidth:=W;
newHeight:=H;
End;
begin
if DlgPrint.Execute then
begin
LPrinter := Printer;
LPrinter.Copies := DlgPrint.Copies;
try
LBitMap := TBitMap.Create;
nw := LPrinter.PaperSize.Width;
nh := LPrinter.PaperSize.Height;
KeepAspectRatio(pnlResultat.Width,pnlResultat.Height,nw,nh);
LBitMap.Width := pnlResultat.Width;
LBitMap.Height := pnlResultat.Height;
pnlResultat.Color:= clWhite;
pnlResultat.PaintTo(LBitMap.Canvas, 0, 0);
pnlResultat.Color:= clDefault;
LPrinter.BeginDoc;
// LPrinter.Title := 'Un titre';
LPrinter.Canvas.CopyRect(Classes.Rect(0, 480, nw, 480+nh),
LBitMap.Canvas, Classes.Rect(0, 0, LBitMap.Width, LBitMap.Height));
finally
LPrinter.EndDoc;
LBitMap.Free;
end;
end;
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
end;
end. |
Partager