Hola ingabraham.
Proba de este modo:
Código Delphi
[-]
uses Printers;
procedure PrintControl(aPrn: TPrinter; aWinControl: TWinControl; const aPosX, aPosY: Integer);
var
Bmp: TBitmap;
hdcSrc: HDC;
begin
Bmp:= TBitmap.Create;
try
Bmp.Width:= aWinControl.Width;
Bmp.Height:= aWinControl.Height;
hdcSrc:= GetWindowDC(aWinControl.Handle);
try
BitBlt(Bmp.Canvas.handle, 0, 0, Bmp.Width, Bmp.Height, hdcSrc, 0, 0, SRCCOPY)
finally
ReleaseDC(aWinControl.Handle, hdcSrc)
end;
aPrn.Canvas.Draw(aPosX, aPosY, Bmp);
finally
Bmp.Free
end
end;
Llamada ejemplo:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
Printer: TPrinter;
begin
Printer:= TPrinter.Create;
try
Printer.BeginDoc;
PrintControl(Printer, GroupBox1, 100, 50);
Printer.EndDoc;
finally
Printer.Free;
end;
end;
Saludos.