Miałem problem z wydrukowaniem zawartości ScrollBoxa (tu stol) znalazlem rozwiązanie na sieci jednak nie wiem jak przeskalować drukarkę do rozmiaru Scrollboxa. ScrollBox ma pionowy pasek przewijania i w danym momencie drukuje mi tylko to co widać, a ja chciałbym aby drukował mi wszystko ze ScrollBox'a.
oto procedura:

procedure TMainForm.printClick(Sender: TObject);
var
  c: TControl;
  i: Integer;
  topX, topY: Integer;
begin
stol.Color:=clWhite;
stol.BorderStyle:=bsNone;
  printer.begindoc;
  try
    { Skalowanie drukarki do rozdzielczosci}
    SetMapMode( printer.canvas.handle, MM_ANISOTROPIC );
    SetWindowExtEx(printer.canvas.handle,
                   GetDeviceCaps(canvas.handle, LOGPIXELSX),
                   GetDeviceCaps(canvas.handle, LOGPIXELSY),
                   Nil);
    SetViewportExtEx(printer.canvas.handle,
                   GetDeviceCaps(printer.canvas.handle, LOGPIXELSX),
                   GetDeviceCaps(printer.canvas.handle, LOGPIXELSY),
                   Nil);
    topX := -80;
    topY := 5;
    for i:= 0 to controlcount-1 do begin
      c:= controls[i];
      If c Is TScrollBox Then
        TWinControl(c).paintto( printer.canvas.handle,
                                c.left  + topX,
                                c.top + topy );
    end;
  finally
    printer.enddoc;
  end;
  stol.Color:=clBtnFace;
  stol.BorderStyle:=bsSingle;
end;