printer.begindoc;
for i:=0 to StringGrid1.RowCount-1 do
begin
  for j:=0 to StringGrid1.ColCount-1 do
  begin
    Printer.Canvas.TextOut(j*TempWidth,i*TempHeight,StringGrid1.Cells[j,i]);
    Printer.Canvas.MoveTo(j*TempWidth,0); // 画列分隔线;
    Printer.Canvas.LineTo(j*TempWidth,GridHeight)
  end;
  Printer.Canvas.MoveTo(0,i*TempHeight); // 画行分隔线;
  Printer.Canvas.LineTo(GridWidth,i*TempHeight);
end;
Printer.EndDoc;设置 TempWidth, TempHeight, GridWidth, GridHeight 来调整位置。