我想从TControl继承访造Tedit控件。请问,Tedit的界面是如何画出来的?里面的光标是如何画出来的?当在里面输入东西时,又如何画出里面的字?
最好是有代码或者例子。谢了!

解决方案 »

  1.   

    从TCUSTOMEDIT类进行继承,VCL有源程序。
      

  2.   

    直接从TControl继承要做的工作太多了,为什么不从TCUSTOMEDIT类进行继承?
      

  3.   

    是这样的的,TEdit是从TCUSTOMEDIT继承下来的,而TCUSTOMEDIT具有编辑框的特性是因为在TCUSTOMEDIT的CreateParams方法中设定了窗口类(在Windows中,窗口类决定了窗口是按钮、文本框、列表框还是其它的什么)。而光标、文字输出、选中的效果都是设定了编辑框窗口类后自动实现的。
      

  4.   

    不同过TCUSTOMEDIT继承的好处是你可以把编辑框做的像UltraEdit这样的灵活(比如行号、文本高亮显示等)但是我建议你应该从TWinControl继承而不是TControl。
    假设你是从TWinControl继承的,实现文本框特性的功能你需要自己一个个来实现,例如出现光标的效果,你就需要通过API函数CreateCaret创建一个光标,然后通过SetCaretPos设置光标的位置并且通过ShowCaret显示光标。
    至于文本的输出,你就需要重载WM_CHAR、WM_UNICHAR消息,获得用户敲的内容并且输出。
      

  5.   

    但是
    如果我要从TControl继承的话
    我如何实现?
      

  6.   

    那看来我要从TWinControl继承了。
    但我在这方面几乎没有什么经验,请有什么例子可供小弟研究研究吗?