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;