1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| type TPrinterPage = record PaperWidth, PaperHeight: Integer; BorderLeft, BorderTop, BorderRight, BorderBottom: Integer; PrintableWidth, PrintableHeight: Integer; end;
function GetPrinterPage: TPrinterPage; begin Printer.BeginDoc;
SetMapMode(Printer.Canvas.Handle, Mm_LoMetric);
Result.PaperWidth := Round((GetDeviceCaps(Printer.Canvas.Handle, PhysicalWidth) / GetDeviceCaps(Printer.Canvas.Handle, LogPixelsX)) * 25.4); Result.PaperHeight := Round((GetDeviceCaps(Printer.Canvas.Handle, PhysicalHeight) / GetDeviceCaps(Printer.Canvas.Handle, LogPixelsY)) * 25.4);
Result.BorderLeft := GetDeviceCaps(Printer.Canvas.Handle, PhysicalOffsetX) div 10; Result.BorderTop := GetDeviceCaps(Printer.Canvas.Handle, PhysicalOffsetY) div 10;
Result.PrintableWidth := GetDeviceCaps(Printer.Canvas.Handle, HorzSize); Result.PrintableHeight := GetDeviceCaps(Printer.Canvas.Handle, VertSize);
Result.BorderRight := Result.PaperWidth - (Result.BorderLeft + GetDeviceCaps(Printer.Canvas.Handle, HorzSize)); Result.BorderBottom := Result.PaperHeight - (Result.BorderTop + GetDeviceCaps(Printer.Canvas.Handle, VertSize));
Printer.Abort; end; |