var
  bmp:Tbitmap;
  Can:TCanvas;
  dc:HDC;
begin
  bmp:=TBitmap.Create;
  bmp.Width:=memo1.width;
  bmp.Height:=memo1.Height;
  DC:=GetDC(memo1.Handle);
  can:=TCanvas.Create;
  can.Handle:=DC;
  bmp.Canvas.CopyRect(Rect(0,0,memo1.Width,memo1.Height),can,Rect(0,0,memo1.Width,memo1.Height));
  can.Free;
  ReleaseDC(0,DC);
  image1.Picture.bitmap:=bmp;
  bmp.free;
end;上面这段代码能够抓取memo1的窗体图像 并保存为bmp图像让image显示。
问题来了。
1.这个抓图是抓取的整个屏幕的图像,不怎么好解释。举个例子 把memo1一半放置于窗体外面然后执行上面的代码。就一半是memo一半是桌面或是其它程序的界面屏幕上显示的什么就是什么。反正就是显示的memo1范围的屏幕,而不是memo的图像。
2.memo如果超出屏幕比如top:=10000;在执行上面的代码。抓取的就是空白。什么也没有。我要的效果就是  抓取指定控件如memo的图像。哪怕控件在其它控件的下层或是超出屏幕以外如TOP:=50000;都能够正常抓起其图像。问过很多人。都说不能实现这样的效果。我想得到一个确定的答案。我觉得可以实现这样的效果。
我自己能力有限。帮帮忙。分不够可以加