여러개의 프린터를 사용하다 보니 각 프린터 마다 여백설정이 달라서 출력물이
바로 나오지 않고 잘립니다.
델마당에서 자료를 얻었는데 제가 하고자하는 부분은 OCX로 지원되는 F1Book을
바로 출력하고자 합니다.
그런데 여백을 조정한후에 출력해도 전혀 변화 없어서 이렇게 도움을 청합니다.
바쁘시겠지만 한번 봐주세요..
감사합니다.
참고: F1Book1.FilePrint(true) ;
제가 수정한 부분입니다.
==============================아래=======================================
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OleCtrls, vcf1, StdCtrls, printers;
type
TForm1 = class(TForm)
Button1: TButton;
F1Book1: TF1Book;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// 그리는 루틴
procedure DrawPage( Canvas: TCanvas );
begin
Canvas.Rectangle( 0, 0, 1000, -200 );
end;
// 기준 점을 APoint로 바꾸고 현재의 기준점을 리턴한다.
function SetOrgPoint( APoint: TPoint ): TSize;
var
Org : TPoint;
begin
Escape( Printer.Canvas.Handle, GETPRINTINGOFFSET, 0, nil, @Org );
SetWindowOrgEx( Printer.Handle, Org.X-APoint.X, APoint.Y-Org.Y, @Result );
end;
//메인 루틴
procedure TForm1.Button1Click(Sender: TObject);
var
OldMap: Integer;
OldOrg: TSize;
begin
{인쇄를 시작한다}
Printer.BeginDoc;
{현재 매핑모드를 oldMap에 저장하고 새로운 매핑모드(0.1mm)를 적용한다}
OldMap := SetMapMode( Printer.Handle, MM_LOMETRIC );
{현재의 기준점을 OldOrg에 저장하고 새로운 기준점(20mm)을 적용한다}
OldOrg := SetOrgPoint( Point( 200,200 ) );
try
{그린다}
//DrawPage( Printer.Canvas ); //<------원래 프린터하는 부분
F1Book1.FilePrint(true); //<------제가 프린터하고자 하는 부분
{여기서 finally 구문은 필히 사용해서 프린터가 먹통이 되는일이 없게..}
finally
{기준점을 원래대로 복구한다}
SetOrgPoint( Point( OldOrg.x, OldOrg.y ) );
{매핑모드를 원래대로 복구한다}
SetMapMode( Printer.Handle, OldMap );
{인쇄를 종료한다}
Printer.EndDoc;
end;
end;
end.