Du kannst es ja mal mit dieser Prozedur versuche:
Delphi-Quellcode:
type TGraphicControlcracker = class(TGraphicControl);
procedure PaintControlToCanvas(control:TControl; Canvas:TCanvas; x,y:Integer);
var
dest, src : TRect;
begin
Assert(Assigned(control));
Assert(Assigned(canvas));
if control is TWinControl then
TWinControl(control).PaintTo(Canvas.Handle, x, y)
else if control is TGraphicControl then
begin
src := control.ClientRect;
dest := src;
OffsetRect(dest, x, y);
Canvas.CopyRect(dest, TGraphicControlCracker(control).Canvas, src);
end
else
Assert(False, 'PaintControlToCanvas: Control-Class not supported');
end;
Also dann ungefähr so:
Delphi-Quellcode:
Printer.BeginDoc;
PaintControlToCanvas(GroupBox1, Printer.Canvas, 100, 80);
...
Printer.EndDoc;
Zu beachten ist, dass die Controls eins zu eins gedruckt werden.
Bei 600dpi Druckerauflösung kann das Ergebnis sehr klein ausfallen.