현재 사용하고 있는 폼과 내용을 그대로 출력하고 싶답니다.
그래서 print문을 사용하여 출력했는데,
출력은 정상적으로 이루어 지지만 용지 크기와 맞지 않아
출력이 잘려서 되고 있답니다.
이것을 용지 크기에 맞게, 원하는 위치에 출력을 하고 싶은데
어떻게 하면 될까요?
도움 부탁드립니다.
사용하다 문제가 되는 것 중에 하나가 또 있는데...
PrintLandscape문이 help를 찾다보니 나와서 사용하였는데
Undeclared identifier: 'PrintLandscape'가 뜨더라구요.
이건 어떻게 하면 해결할 수 있을까요?
>
> 현재 사용하고 있는 폼과 내용을 그대로 출력하고 싶답니다.
> 그래서 print문을 사용하여 출력했는데,
> 출력은 정상적으로 이루어 지지만 용지 크기와 맞지 않아
> 출력이 잘려서 되고 있답니다.
> 이것을 용지 크기에 맞게, 원하는 위치에 출력을 하고 싶은데
> 어떻게 하면 될까요?
> 도움 부탁드립니다.
>
> 사용하다 문제가 되는 것 중에 하나가 또 있는데...
> PrintLandscape문이 help를 찾다보니 나와서 사용하였는데
> Undeclared identifier: 'PrintLandscape'가 뜨더라구요.
> 이건 어떻게 하면 해결할 수 있을까요?
>
제가 가지고 있던 자료인데 참고하세요
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Printers;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure DrawImage(Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap);
var
Header, Bits: Pointer;
HeaderSize, BitsSize: Integer;
begin
GetDIBSizes(ABitmap.Handle, HeaderSize, BitsSize);
GetMem(Header, HeaderSize);
GetMem(Bits, BitsSize);
try
GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^);
StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top,
DestRect.Right - DestRect.Left, DestRect.Bottom - DestRect.Top,
0, 0, ABitmap.Width, ABitmap.Height, Bits, TBitmapInfo(Header^),
DIB_RGB_COLORS, SRCCOPY);
finally
FreeMem(Header, HeaderSize);
FreeMem(Bits, BitsSize);
end;
end;
{ Print a Bitmap using the whole Printerpage }
procedure PrintBitmap(ABitmap: TBitmap);
var
relheight, relwidth: integer;
begin
screen.cursor := crHourglass;
Printer.BeginDoc;
if ((ABitmap.width / ABitmap.height) > (printer.pagewidth /printer.pageheight)) then
begin
{ Stretch Bitmap to width of Printerpage }
relwidth := printer.pagewidth;
relheight := MulDiv(ABitmap.height, printer.pagewidth,ABitmap.width);
end else
begin
{ Stretch Bitmap to height of Printerpage }
relwidth := MulDiv(ABitmap.width, printer.pageheight, ABitmap.height);
relheight := printer.pageheight;
end;
DrawImage(Printer.Canvas, Rect(0, 0, relWidth, relHeight), ABitmap);
Printer.EndDoc;
screen.cursor := crDefault;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
PrintBitmap(Form1.GetFormImage);
end;
end.