我写的chart打印,
var
h,w,i:Integer;
begin
Screen.Cursor := crHourGlass; { <-- nice detail }
try
Printer.PrinterIndex:=PrinterCB.ItemIndex;
Printer.Orientation:=TPrinterOrientation(LandscapeRB.Checked);
Printer.BeginDoc;
Printer.Canvas.Font.Name:='Arial';
Printer.Canvas.Font.Size:=10; { <-- set the font size }
Printer.Canvas.Font.Style:=[];
Printer.Canvas.TextOut(0,0,Printname); { <-- print some text }
h:=Printer.PageHeight; { <-- get page height }
w:=Printer.PageWidth; { <-- get page width }
{ And now print the chart component... }
Chart.PrintPartial( Rect( w*strtoint(LeftEdt.Text) div 100, { <-- left margin }
h*strtoint(RightEdt.Text) div 100 , { <-- top margin }
w - (w*strtoint(TopEdt.Text) div 100), { <-- right margin }
h - (h*strtoint(BottomEdt.Text) div 100) )); { <-- bottom margin }
Printer.Canvas.Font.Name:='Arial';
Printer.Canvas.Font.Size:=12; { <-- set the font size }
Printer.Canvas.Font.Style:=[];
Printer.Canvas.TextOut(0,Printer.Canvas.TextHeight('注释:'),'注释:');
for i:=0 to Memo.Lines.Count-1 do
Printer.Canvas.TextOut(0,(i+2)*Printer.Canvas.TextHeight(Memo.Lines.Strings[i]),Memo.Lines.Strings[i]); { <-- print some text }
Printer.EndDoc;
except
on Exception do { just in case an error happens... }
begin
Printer.Abort;
Printer.EndDoc;
raise; { <-- raise up the exception !!! }
end;
end;
Screen.Cursor:=crDefault; { <-- restore cursor }