关于将stringgrid 中数据paint to matefilecanvas的问题

我将一个含有 stringgrid 的panel paint to 一个 metafilecanvas 类型上,
其中 panel 的 width/height = printer.pagewidth/pageheight,
stringgrid.height=panel.height - stringgrid.top - 10
//stringgrid 与 panel 底部相距 10

但print 出来的效果是 stringgrid 下半部分 cell 的数据都消失了,
上半部分显示正常,

请问是什么原因 ?

代码如下 :
//预览按钮

procedure TForm1.BtnPreviewClick(Sender: TObject);
var
MFC:TMetaFileCanvas;
w, h: Integer;

begin

w := pnlprint.Width;
h := pnlprint.Height;
//pnlprint 是要打印的panel,里面有一个stringgrid
//但是打印后stringgrid 下半部分 cell中的数据没有了,但仍可以
//显示stringgrind中的网格,这说明print的时候是全部print到 canvas中。

imgpreview.SetBounds(0,0,w,h); //imgpreview: Timage, 位于Pnlpreview 里面

imgpreview.Picture.Metafile.Width := w;
imgpreview.Picture.Metafile.Height := h;
pnlpreview.SetBounds(pnlpreview.Left,pnlpreview.Top,w,h);

MFC:= TMetaFileCanvas.Create(imgpreview.Picture.Metafile,0) ;
try

pnlprint.PaintTo(MFC.Handle ,0,0);
finally
MFC.Free;
end;

pnlpreview.SetBounds(pnlpreview.Left,pnlpreview.Top,w ,h);
pnlpreview.Visible:=true;
pnlprint.Visible:=false;

end;
[1245 byte] By [sam_fs80-阿毛] at [2008-2-13]