http://hi.baidu.com/lujin49/item/70f7c7d8f95b2017e0f46f95
模仿的这里

解决方案 »

  1.   

    运行后,memo的大小怎么能改变的?
      

  2.   

    这个透明的远离实际是靠这个TImage来充当背景模拟的,这个TImage必须重叠在这个memo的下面,
    所以你改变memo大小时,应该相应的把这个Timage的大小跟着改变照着你上面给的网页里的改一下,当然这里richedit就换成memo了  if msg.Msg = WM_ERASEBKGND then
        msg.result := 1
      else if (msg.Msg = CN_CTLCOLORMSGBOX) or (msg.Msg = CN_CTLCOLORSTATIC) then
      begin
        bb := null;
        msg.result := bb
      end
      // 当memo尺寸改变时
      else if (Msg.Msg = WM_SIZE) then
      begin
        // 把Image1控件跟memo1的大小设置相同
        Image1.SetBounds(memo1.Left, memo1.Top, memo1.Width, memo1.Height);
      end
      else
        oldproc(msg)
      

  3.   


    procedure TForm1.ClassWndProc(var Msg: TMessage);
    begin
      if msg.Msg = WM_ERASEBKGND then
        msg.result := 1
      else if (msg.Msg = CN_CTLCOLORMSGBOX) or (msg.Msg = CN_CTLCOLORSTATIC) then
      begin
        bb := null;
        msg.result := bb
      end
      else if (Msg.Msg = WM_SIZE) then
      begin
        Image1.SetBounds(mmo1.Left, mmo1.Top, mmo1.Width, mmo1.Height);
      end
      else
        oldproc(msg)
    end;