网上搜过,也做过一些实验,试过WM_ERASEBKGND、WM_NCPAINT结果都不满意。有做过的朋友帮忙讲一下,谢谢!

解决方案 »

  1.   

    就是在输入的时候,也可以把后面窗体上的背景透出来。网上下载的所谓透明EIDT控件,只做到边缘透明,输入文字的位置还是白色的。
      

  2.   

    自己写一个吧,具体可以查看地Tlabel的实现
      

  3.   

    如果单纯的绘制控件容易,难点在于怎么有光标和选中状态这些。想支持这些应该从TEidt继承,试了一些方法都不理想。
      

  4.   

    不能透明就考虑给 TEDIT 置个背景图
      

  5.   

    procedure CNCTLCOLOREDIT(var Message:TWMCtlColorEdit);message CN_CTLCOLOREDIT;
    var
      ABrush:TBrush;
      ABitmap:TBitmap;
    begin
      Inherited;
      SetBkMode(Message.ChildDC,TRANSPARENT);
      ....(省略)将父控件背景绘制到ABitmap上......
      ABrush:=TBrush.Create;
      ABrush.Bitmap:=ABitmap;
      Message.Result:=ABrush.Handle;
    end;就可以了
      

  6.   

    有将父控件背景绘制到ABitmap上么?
    我也用D2010,你把关键代码贴出来吧,我帮你看看。
      

  7.   

    请参见我的blog文章:http://blog.csdn.net/tempxx
      

  8.   

    首先将edit的borderstyle属性改成bsNone,然后设置color属性和form的color属性一致就行了
      

  9.   

    如果有图像呢 并且还是gif的呢; 呵呵
      

  10.   

    之前没看到背景有图片条件。找到一个第三方控件tms。里面有个advedit控件,设置它的transparent为true就可以透明了,再把borderstyle属性改成bsNone可以去边框
      

  11.   

    可以实现。你先将Edit放到新窗体form2上,然后在form1中的show事件中使用下面两行关键代码:  SetWindowLong(Form2.Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
      SetLayeredWindowAttributes(Form2.Handle, clWhite, 255, LWA_COLORKEY);
      form2.Show;接下来,你要做的是把form2想办法与form1绑定到一起,使用户感觉好像只有一个form1。
    你把form2设置成无标题无边框的。当个容器来用。