프린트를 하는데에는 성공을 하였습니다. 그런데 미리보기 할려고 하니깐
감을 잡지 못하겠네요...
어떻게 해야 할까요?
가는 방법이나 이해가 되게 설명좀 부탁드리겠습니다.
고수님들의 답변 부탁드리겠습니다.
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;
// X,Y 위치에서 부터 Text를 뿌려줌.
procedure TextOutBase( X, Y: Integer; Text: String );
var
Metrics : TTextMetric;
begin
with Printer.Canvas do
begin
GetTextMetrics( Handle, Metrics );
TextOut( X, Y + Metrics.tmAscent, Text);
end;
end;
procedure PrintShow;
var
OldMap: Integer;
OldOrg: TSize;
Metrics: TTextMetric;
begin
// 프린터 시작...
Printer.BeginDoc;
OldMap:=SetMapMode( Printer.Handle, MM_LOMETRIC ); // 현재 매핑모드를 OldMap에 저장하고 새로운 매핑모드(0.1mm)를 적용한다.
OldOrg:=SetOrgPoint( Point(20,20) ); // 200,200 현재의 기준점을 OldOrg에 저장하고 새로운 기준점(20mm)을 적용한다.
with Canvas do
begin
Font.Name:='MS Sans Serif';
Font.Style:=[];
Font.PixelsPerInch:=GetDeviceCaps( Printer.Canvas.Handle, LOGPIXELSY);
end;
try
with Printer.Canvas do
begin
TextOutBase(5,-40,'안녕하세요');
TextOutBase(5,-80,'만나서 반갑습니다.');
end;
finally
SetOrgPoint( Point( OldOrg.cx, OldOrg.cy ) ); // 기준점을 원래대로 복구한다.
SetMapMode( Printer.Handle, OldMap ); // 매핑모드를 원래대로 복구한다.
Printer.EndDoc;
end;
end;