关于将stringgrid 中数据paint to matefilecanvas的问题
其中 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;

