加入事件和加入属性差不多,只是要响应特定的消息,写消息处理句柄,如:
TMyControl = class(Tcomponent)
  private
    FOnMouseEnter: TNotifyEvent;
    ........
    ........
    procedure FSetOnMouseEnter(value: TNotifyEvent);
  protected 
    procedure cmmouseenter(var Msg: TMessage); message CM_MOUSEENTER;
  published
    property OnMouseLeave: TNotifyEvent read FonMouseLeave write FSetOnMouseLeave;
 end;procedure TMyControl.cmmouseleave(var Msg: TMessage);
 begin
  ....
  if Assigned(FonMouseLeave) then  FOnMouseLeave(Self);
 end;

解决方案 »

  1.   

    完整的组件例子:
    unit MyLabel;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TMyLabel = class(TLabel)
      private
        { Private declarations }
        
        procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
        procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
      protected
        { Protected declarations }
      public
        { Public declarations }
      published
        { Published declarations }
    end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Samples', [TMyLabel]);
    end;procedure TMyLabel.CMMouseEnter(var message:Tmessage);
    begin
        Canvas.Font.Color:=$0000FF;
        Canvas.Brush.Color:=FEntercolor;
        repaint;
    end;procedure TMyLabel.CMMouseLeave(var message:Tmessage);
    begin
        Canvas.Font.Color:=clBlue;
        Canvas.Brush.Color:=FLeavecolor;
        repaint;
    end;
    end.