由于TGraphicControl本身无句柄,因此从其继承,写windowless控件比较方便,button什么的都比较好办,但是edit比较麻烦
因为一般的edit控件,在获得输入焦点后,会有光标闪烁的效果,不知这点在从TGraphicControl继承下来的edit控件里怎么实现?

解决方案 »

  1.   

    同时还有个问题,TGraphicControl不能响应键盘事件,这个比较麻烦,初步的想法是,和TGraphicControl的鼠标时间一样,从父窗体通过判断区域,得来。
      

  2.   

    windowcontrol有句柄,和windowless的目标不符。
    要是能用windowcontrol,何必这么费劲
      

  3.   

    Hierarchy
    TObject

    TPersistent

    TComponent

    TControl

    TWinControl

    TCustomEdit

    TEdit
    哪里有TGraphicControl?
      

  4.   

    windowless的控件要实现windowcontrol功能,就是说自己重写windows已有的功能。
      

  5.   

    我是说TEdit的祖先里没有TGraphicControl,那几行类名是Delphi帮助里面TEdit的继承顺序(您都写控件了,这个不会没见过吧)。
    想写控件,VCL一定要熟。
      

  6.   

    TGraphicControl是TControl的分支,也就是TWinControl的兄弟。TImage,TBevel等均是继承自TGraphicControl
      

  7.   

    本来TGraphicControl是没有句柄的,如果你想用来做EDIT的话,控件要自己DRAW,没有直接的更好方法了.
      

  8.   

    那个当然知道,但是从delphi自带的edit继承,肯定有句柄,而我需要实现的是无句柄,显然不能从有句柄后的开始继承,所以你给我那个继承线何用???
      

  9.   

    键盘消息到还算好办,实在不行,只能一个skinedit(姑且这么叫吧)设置一个hook,hook住wh_keyboard。
    但是那个光标没找到可行的方案。
      

  10.   

    你的“从TGraphicControl继承下来的edit控件”是指从TGraphicControl继承下来的长得像edit的其他控件吧,一般说“edit控件”就是指Windows标准控件里的edit,在Delphi里指TEdit(使用Windows的edit)。你真地认为写“从TGraphicControl继承下来的edit控件”是可行的吗?
      

  11.   

    你就当我闲的没事干算了~~~,至于你怎么理解我说的那个edit控件,那我无从左右。
      

  12.   

    光标闪烁是小事情,
    焦点呢,输入法,还有好多事情,你得把Windows干的事情自己都干一遍,你会发现你的控件和窗体控件一样占资源(如果不是更多的话)。
    焦点上面,首先你的确定窗口是否有焦点,窗口上的窗体控件有没有谁有焦点,在windowless控件里面应该谁作有焦点状(用户看到好几个edit一齐闪烁一定会不知所措)。如果焦点变化又该怎样。一旦windowless控件里面有一个获得“焦点”,窗口上的窗体控件必须失去焦点,而窗口上的窗体控件得到焦点,所有windowless控件都不能做有“焦点”状。