아래 코드는 제어판에서 프린터 용지설정을 바꾸는 코드입니다.
책의 예제에서 나온건데..
분명 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;