hi
@bitsetter:
erstmal danke für den Link, ich habe alles so gemacht, wie es dort beschrieben war, also die function zu einer procedure mit const parameter gemacht, ich habe auch das .Free nicht vergessen, und auch die Anzeige funktioniert einwandfrei, aber der Speicher wird nicht freigegeben?!?!
Hier mal ein bisschen Code:
Delphi-Quellcode:
//Zum Drucken:
if PrintDialog1.Execute then
begin
Printer.Title:= CboxFormularart.Text+' '+LabNr.Caption;
Printer.BeginDoc;
SetMapMode(Printer.Canvas.Handle, MM_ANISOTROPIC);
x:= GetDeviceCaps(Printer.Canvas.Handle, PHYSICALWIDTH);
y:= GetDeviceCaps(Printer.Canvas.Handle, PHYSICALHEIGHT);
SetWindowExtEx(Printer.Canvas.Handle,x,y,Nil);
SetViewportExtEx(Printer.Canvas.Handle,x,y,Nil);
DrCanvas := TImage.Create(self);
FormDruckansicht.DruckCanvas(DrCanvas,x,y);
Printer.Canvas.Draw(0-GetDeviceCaps(Printer.Canvas.Handle, PHYSICALOFFSETX),
0-GetDeviceCaps(Printer.Canvas.Handle, PHYSICALOFFSETY),
DrCanvas.Picture.Graphic);
DrCanvas.Free;
Printer.EndDoc;
end;
//Als Druckvorschau:
DrCanvas := TImage.Create(self);
try
DruckCanvas(DrCanvas ,width, height);
Image1.Canvas.Draw(0,0, DrCanvas.Picture.Graphic);
finally
DrCanvas.Free;
end;