怎样实现当我把光标(用鼠标)移动到一个EDIT上时EDIT的背景改变?

解决方案 »

  1.   

    你可在edit组件的mousemove事件里编写
    edit1.backcolor:=你要的颜色;
    backcolor(这个属性我可能记错了)
      

  2.   

    unit Unit1tmp;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TMainForm = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Edit4: TEdit;
        Edit5: TEdit;
        Edit6: TEdit;
      private
        { Private declarations }
        FCurEdit: TEdit;    procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
        procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
      public
        { Public declarations }
      end;var
      MainForm: TMainForm;implementation{$R *.dfm}procedure TMainForm.CMMouseEnter(var Msg: TMessage);
    begin
      if TObject(Msg.LParam) is TEdit then
      begin
        FCurEdit := TEdit(Msg.LParam);
        FCurEdit.Color := clRed;
      end; 
    end;procedure TMainForm.CMMouseLeave(var Msg: TMessage);
    begin
      if TObject(Msg.LParam) is TEdit then
        FCurEdit.Color := clWhite;
    end;end.
      

  3.   

    不用那么复杂吧,直接在中写就可以了。
    先判断一下,鼠标的坐标是不是在edit之内,如果是,再判断是否改过颜色,如果没有改,就改变颜色。
    如果鼠标不在edit之内,在判断是否改过颜色,如果改过,就改回来。
      

  4.   

    xzgyb(老达摩)的做法是正确的,是delphi处理类似问题的典型方案。还有就是可以写一个控件,从TEdit继承,增加MouseEnterColor属性、OnMouseEnter和OnMouseLeave事件,继承    
    procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
    自己动手试试吧。这个帖子不要分。