Можно написать наследника, переопределив у него события CM_MOUSEENTER и CM_MOUSELEAVE:
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls;
type TAnimateEx = class(TAnimate) private FOnMouseEnter, FOnMouseLeave: TNotifyEvent; procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE; public property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end;
TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private FAnimate: TAnimateEx; public procedure OnAnimateMouseEnter(Sender: TObject); procedure OnAnimateMouseLeave(Sender: TObject); end;
var Form1: TForm1;
implementation
{$R *.dfm}
{ TAnimateEx }
procedure TAnimateEx.CMMouseEnter(var Msg: TMessage); begin if Assigned(FOnMouseEnter) then FOnMouseEnter(Self); inherited; end;
procedure TAnimateEx.CMMouseLeave(var Msg: TMessage); begin if Assigned(FOnMouseLeave) then FOnMouseLeave(Self); inherited; end;
procedure TForm1.FormCreate(Sender: TObject); begin FAnimate := TAnimateEx.Create(Self); with FAnimate do begin Parent := Self; FileName := 'E:\TEMP\AVI\clock.avi'; Left := 10; Top := 10; OnMouseEnter := OnAnimateMouseEnter; OnMouseLeave := OnAnimateMouseLeave; end; end;
procedure TForm1.OnAnimateMouseEnter(Sender: TObject); begin FAnimate.Active := True; end;
procedure TForm1.OnAnimateMouseLeave(Sender: TObject); begin FAnimate.Active := False; end;
end.
| Добавлено @ 19:16 Ой, кажись опоздал Пока писал код, уже Fedor запостил. |