cs_ManChesTer
Messages postés
374
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
15 janvier 2021
11 nov. 2004 à 23:51
Il ne faut pas utiliser form1.print mais tprinter :
Uses printers;
procedure PrinterStretchDraw(R:TRect;Bmp:TBitmap);
var
BmpInfo,
BmpData : Pointer;
BmpInfoSize,
BmpDataSize : Cardinal;
begin
GetDIBSizes(Bmp.Handle,BmpInfoSize,BmpDataSize);
GetMem(BmpInfo,BmpInfoSize);
GetMem(BmpData,BmpDataSize);
try
GetDIB(Bmp.Handle,Bmp.Palette,BmpInfo^,BmpData^);
StretchDIBits(Printer.Canvas.Handle,R.Left,R.Top,R.Right,R.Bottom,
0,0,Bmp.Width,Bmp.Height,BmpData,TBitmapInfo(BmpInfo^),
DIB_RGB_COLORS,SRCCOPY);
finally
FreeMem(BmpData);
FreeMem(BmpInfo);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var dc : hdc;
bmp : tbitmap;
R : TRect;
begin
// dc:=GetWindowDc(Form1.Handle); // pour imprimer le form complet
dc:=GetDc(Form1.Handle); // pour imprimer le contenu du form
bmp:=tbitmap.Create;
bmp.Width:=form1.BoundsRect.Right-form1.BoundsRect.Left;
bmp.Height:=form1.BoundsRect.Bottom-form1.BoundsRect.Top;
StretchBlt(bmp.canvas.Handle,0,0,bmp.Width,bmp.Height,
dc,0,0,form1.Width,form1.Height,SRCCOPY);
ReleaseDc(Form1.Handle,dc);
with printer do
begin
BeginDoc;
PrinterStretchDraw(Rect(0,0,Printer.PageWidth,Printer.PageHeight),bmp);
EndDoc;
end;
bmp.Free;
end;
Bon Coding ....
ManChesTer.