一个是可以在onMouseMove时候判断边界然后通过语句改变颜色,
还可以在onMouseEnter和OnMouseLeave时间编写相应的处理代码,
但是这两种方法都有一个缺陷就是当故意用鼠标在边界地方缓缓移出移进时候,就会判断错误.

解决方案 »

  1.   

    onMouseMove时候判断边界然后通过语句改变颜色,
      

  2.   

    MouseMove
    加入改变色
    然后再一个label的包容器的mousemove加入该回原来色
      

  3.   

    在form的onMouseMove事件中恢复其颜色
      

  4.   

    onMouseMove
    onMouseEnter
    哪个事件在先,哪个在后?
      

  5.   

    procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
    label1.Color:=clInfoBk
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
    label1.color:=clGray;
    end;
      

  6.   

    使用 MouseMove 可以实现这样的效果,但,不完美……最好是捕获 CM_MOUSEENTER 和 CM_MOUSELEAVE 消息,这样就很完美了!
      

  7.   

    在多一句,onMouseMove和onMouseEnter在不是当前活动对象里的情况下,如何改变其色?
      

  8.   

    ……
    procedure MouseEnterProc(var msg:TMessage);message CM_MOUSEENTER;
    procedure MouseLeaveProc(var msg:TMessage);message CM_MOUSELEAVE;
    ……
      

  9.   

    我不想再得分,还要说的是,Form的OnMouseMove事件不能很好的解决问题.
    因,当Form上放的有控件的时候,产生相应的控件OnMouseMove事件,只有当移动到空白处的时候才会产生Form的OnMouseMove事件.
    所以一般来说有个必杀技,定义一个过程是AllOnMouseMove,然后判断坐标值给相应的控件变色,最后是把每个控件和Form的OnMouseMove全部设成AllOnMouseMove.
    这个最容易理解.