给构件添加 MouseLeave 事件

  我不明白为何 Borland 的 Delphi 控制不支持 mouse leave 事件.下面是一个简易的例子,它不仅示范了怎样让 TIamge 控制实现 MouseLeave 事件,而且也示范了怎么样建立一个简单的 Delphi 构件.
  
  {
  Delphi 编程新手注意的问题:
    本例是一个 Pascal 单元,请用 MyImg.pas 保存此单元.例子中的方法可应用于其它控制,所以你可以用 TLabel 或 TButton 等其它类来代替 TImage.
  }
  
  unit MyImg;
  interface
  uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
    ExtCtrls;
  type
    TMyImage = class(TImage)
    private
      FOnMouseLeave: TNotifyEvent;
      procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
    protected
    public
    published
      property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
    end;
  
  procedure Register;
  
  implementation
  
  procedure Register;
  begin
    RegisterComponents('Samples', [TMyImage]);
  end;
  
  procedure TMyImage.CMMouseLeave(var Message: TMessage);
  begin
    inherited;
    if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
  end; 
  

posted @ 2009-10-11 00:47  冷寒生  阅读(175)  评论(0编辑  收藏  举报
IT知识库