OnMouseIn用OnMouseOver代替即可。
OnMouseLeave可以用控件所在窗体的OnMouseOver代替(如果鼠标在窗口上移动就表示离开控件了)。
如果要更精确的方法,需要使用消息。
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
             毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
  I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
I.Desire := '加不加分随你';
—————————————————————————————————
       

解决方案 »

  1.   

    用消息处理比较好
    CM_MOUSEENTER
    CM_MOUSELEAVE
      

  2.   

    lxpbuaa(桂枝香在故国晚秋),老弟,你下面这几句话有欠斟酌啊:
                '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
      

  3.   

    CM_MOUSEENTER
    CM_MOUSELEAVE
    为delphi在controls单元定义的消息,要截获这两个消息,得重写这个控件的
    窗口函数,我这里有个TValueListEditor的例子。
    type
      TNewValueListEditor = class(TValueListEditor)
      protected
        { Protected declarations }
        procedure WndProc(var Message: TMessage); override;
      end;procedure TNewValueListEditor.WndProc(var Message: TMessage);
    begin
      case Message.Msg of
        CM_MOUSELEAVE: //执行自己的代码;
        CM_MOUSEENTER: ;
      end;
      inherited WndProc(Message);
    end;用法如下(可以不用注册新的VCL,将上面代码和下面的放在同一单元):在Private里定义一个变量
      MyValueListEditor: TValueListEditor;在FormCreate里动态生成:
      MyValueListEditor:= TNewValueListEditor.Create(Self);
      MyValueListEditor.Parent := Self;
      //后面设置其他属性及事件