Q&A

  • 프린터제어에 대해.. Help
아래 코드는 제어판에서 프린터 용지설정을 바꾸는 코드입니다.

책의 예제에서 나온건데..

분명 LANDSCAPE로 지정했는데도 PORTRAIT로 출력되는군요.

소스를 암만 봐도 잘못 된게 없는것 같은데 정말 이상합니다.

왜 그런지 꼭 갈쳐주세요.

부탁합니다.



procedure TForm1.Button1Click(Sender: TObject);

var

TamanoDevice : LongInt;

Caracteristics : TdeviceMode;

DeviceMode : THandle;

DevMode : PdeviceMode;

Impresora : THandle;

Device : array[0..255] of char;

Driver : array[0..255] of char;

Port : array[0..255] of char;

begin

Printer.GetPrinter(Device, Driver, Port, DeviceMode);

OpenPrinter(Device, Impresora,nil);

TamanoDevice := DocumentProperties(0,Impresora, Device,

Caracteristics,Caracteristics,0);

DeviceMode := GlobalAlloc(GHND, TamanoDevice);

if DeviceMode <> 0 Then

begin

DevMode := Globallock(DeviceMode);

if DocumentProperties(0,Impresora, Device,DevMode^, DevMode^, DM_OUT_BUFFER) < 0 then

ShowMessage('Error');

DevMode^.dmPaperSize := DMPAPER_A4;

DevMode^.dmFields := DM_PAPERSIZE;

DevMode^.dmOrientation := DMORIENT_LANDSCAPE;

DevMode^.dmFields := DM_PAPERSIZE or DM_ORIENTATION;

if DocumentProperties(0,Impresora, Device,DevMode^, DevMode^,

DM_IN_BUFFER or DM_OUT_BUFFER or DM_UPDATE) <0 then

ShowMessage('Error');

GlobalUnlock(DeviceMode);

GlobalFree(DeviceMode);

DeviceMode := 0;

end

else

ShowMessage('Error');

ClosePrinter(Impresora);

Printer.beginDoc();

Printer.Canvas.TextOut(100,100,'1231232132132132133');

Printer.endDoc() ;



end;



0  COMMENTS