没有第三方控件是不行的,推荐你到:
http://vclxx.vcl.org
http://www.dream-com.com

解决方案 »

  1.   

    http://www.dream-com.com/memo.html的一个Memo
    功能非常强
      

  2.   

    我下载了dream memo,控件真多,每个控件都可带背景,
    源码要钱,但非源码好象不要钱,试一试,会使你的眼睛发直呀
      

  3.   


      从TCustomEdit或TEdit派生,请参考http://www.csdn.net/expert/topic/120/120168.shtm
      TesBasicEdit = class(TEdit)
      private
        { Private declarations }
        FPicture:TPicture;
      protected
        { Protected declarations }
        SetPicture(const Value:TPicture);
        procedure paint;override;
      public
        { Public declarations }
      published
        { Published declarations }
        property Picture:TPicture read FPicture write SetPicture;
      end;
      中关于派生VCL类的方法,不过这个类更加容易,因为无须理解消息的处理;  只要在内声明中添加一个FPicture:TPicture对象,再添加属性:
    property Picture:TPicture read FPicture write SetPicture;  其中SetPicture(const Value:TPicture)为函数;procedure TesBasicEdit.SetPicture(const Value:TPicture);
    begin
      //还可以进一步添加对图片要求的代码,如
      //if Value.BitMap.Width>200 then Exit;
      FPicture:=Value;
      Invalidate;
    end;  以上代码是将图片存入控件对象,还有一件最重要的事情,就是将它显示出来,这需要重载Paint方法(注意是override);procedure TesBasicEdit.Paint;
    const
      Gap=3;
    begin
      inherited;
      Canvas.Font:=Font;
      //Canvas.Font.Size:=7; //可以在此更改最小字体输出(大小可以小于8)
      Canvas.Brush.Style := bsClear;
      Canvas.Lock;
      Canvas.CopyRect(Rect(Gap,Gap,Width-Gap,Height-Gap),
        FPicture.BitMap.Canvas,
        Rect(0,0,FPicture.BitMap.Width,FPicture.BitMap.Height));
      Canvas.TextOut(4,4,Text);
      Canvas.UnLock;
    end;  以上代码未经破坏性测试,仍需调节,所以质量不保证,希望对你有用。  对与对TMemo的派生基本类似,不过要困难的多,可以这样说“不如从TCustomEdit派生”(注:TMemo<-TCustomMemo<-TCustomEdit)。因为直接从TMemo或TCustomMemo派生会有许多重复的文字输出代码,这样出来控件的执行效率下降,快速变化时还可能出现抖动、闪烁的后遗症。
      

  4.   

      Sorry!类声明有错:  TesBasicEdit = class(TEdit)
      private
        { Private declarations }
        FPicture:TPicture;
      protected
        { Protected declarations }
        //此处出错
        procedure SetPicture(const Value:TPicture);
        procedure paint;override;
      public
        { Public declarations }
      published
        { Published declarations }
        property Picture:TPicture read FPicture write SetPicture;
      end;