Printers를 이용하여 연속용지를 출력하려고 하는 초짜입니다...
Q&A 에서 찾아서~ 간신히~ 간신히~ 만들어 가고 있습니다...
용지의 사이즈를 조절하는것도~ 하긴 했는데...
Length 부분에서 현재 1047 로 값을 줬는데 이렇게 하면 글씨가 밀려지고
1을 더해서 1048로 값을 주면~ 글씨가 당겨지네요...
종이에 정확하게 맞지 않구요... -.-;;
정확하게 하려고~ 1047.5로 했더니 소수점이 있으면 안된다고 하구요...
Paper.Length 1차인데~ Page.Height는 2 차이가 나네요
너무 많이 틀려서 갖고 있는 종이 다~~~ 버리게 생겼어요...
정확하게 조절하는 방법이 없나요?
아래는 소스입니다...
var Len, Wid : Integer;
OldMap: Integer;
OldOrg: TSize;
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
{사용자 정의 용지로 바꾸는 예}
pDMode^.dmOrientation := DMORIENT_PORTRAIT;
pDMode^.dmFields := pDMode^.dmFields or
DM_ORIENTATION or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := 2400; {단위는 mm}
pDMode^.dmPaperLength := 1048; {단위는 mm}
GlobalUnlock(hDMode);
end;
end;
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.BeginDoc;
with Printer.Canvas do
begin
OldMap := SetMapMode( Printer.Handle, MM_LOMETRIC );
OldOrg := SetOrgPoint( Point( 100, 25 ) );
try
Brush.Style := bsClear;
Len := 350;
Wid := -60;
Font.Name := '굴림';
Font.Height := 40;
TextOutBase(Len, Wid, mEditSlipDt.Text);
Inc(Len, 1100);
TextOutBase(Len, Wid, EditSlipNo.Text);
Finally
SetOrgPoint( Point( OldOrg.cx, OldOrg.cy ) );
SetMapMode( Printer.Handle, OldMap );
Printer.EndDoc;
end;