想学习写一个TEDIT控件,使其输入时color为红色,exit时color为白色,不知如何写?初学请赐教!谢谢

解决方案 »

  1.   

    从TCustomEdit继承,覆盖CM_ENTER,CM_EXIT消息,在CM_ENTER时设置color为红色,CM_EXI时设置时color为白色
      

  2.   

    我已经写到这里了
    unit MyEdit;interfaceuses
      SysUtils, Classes, Controls, StdCtrls,Graphics;type
      TMyEdit = class(TEdit)
      private
        { Private declarations }
        fentercolor : tcolor;
        procedure setentercolor(const value : tcolor);
      protected
        { Protected declarations }
      public
        { Public declarations }
        constructor create(aowner : tcomponent);override;
        destructor destroy;override;
      published
        { Published declarations }
        property entercolor : tcolor read fentercolor write setentercolor default clmoneygreen;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Samples', [TMyEdit]);
    end;{ TMyEdit }constructor TMyEdit.create(aowner: tcomponent);
    begin
      inherited;
      FEnterColor := clmoneygreen;
    end;destructor TMyEdit.destroy;
    begin  inherited;
    end;procedure TMyEdit.setentercolor(const value: tcolor);
    begin
      FEnterColor := value;
    end;end.可是不知在哪里写enter及exit的事件?请帮帮忙!谢谢
      

  3.   

    unit MyEdit;interfaceuses
      SysUtils, Classes, Controls, StdCtrls,Graphics;type
      TMyEdit = class(TEdit)
      private
        { Private declarations }
        fentercolor : tcolor;
        procedure setentercolor(const value : tcolor);
        procedure CMEnter(var Message: TCMGotFocus); message CM_ENTER;
        procedure CMExit(var Message: TCMExit); message cm_exit;
      protected
        { Protected declarations }
      public
        { Public declarations }
        constructor create(aowner : tcomponent);override;
        destructor destroy;override;
      published
        { Published declarations }
       // property entercolor : tcolor read fentercolor write setentercolor default clmoneygreen;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Samples', [TMyEdit]);
    end;{ TMyEdit }procedure TMyEdit.CMEnter(var Message: TCMGotFocus);
    begin
      inherited;
      Self.Color:=clRed;
    end;procedure TMyEdit.CMExit(var Message: TCMExit);
    begin
       inherited;
       Self.Color:= clWhite;
    end;constructor TMyEdit.create(aowner: tcomponent);
    begin
      inherited;
      FEnterColor := clmoneygreen;
    end;destructor TMyEdit.destroy;
    begin  inherited;
    end;{procedure TMyEdit.setentercolor(const value: tcolor);
    begin
      FEnterColor := value;
    end; }end.
      

  4.   

    加上这两个事件就可以了
        procedure CMEnter(var Message: TCMGotFocus); message CM_ENTER;
        procedure CMExit(var Message: TCMExit); message cm_exit;
      

  5.   

    没楼上那么复杂, 重载DoEnter 和DoExit就可以了  TMyEdit = class(TEdit)
      private
        ...
      protected
        procedure DoEnter; override;
        procedure DoExit; override;
        ...
      end;...procedure TMyEdit.DoEnter;
    begin
      Color := FEnterColor;
      inherited;
    end;