EugeneBoss3 Ну вот [more=примерно так]
Код: //код компонента без регистрации (создается в run-time) так как это просто пример
unit Label1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
var Timer: TTimer;
type
TMyLabel = class(TCustomLabel)
private
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
protected
procedure TimerEvent(Sender: TObject);
public
{ Public declarations }
constructor Create(AOwner:Tcomponent);override;
published
{ Published declarations }
end;
implementation
constructor TMyLabel.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
Caption := 'Old caption';
Timer:=TTimer.Create(self);
Timer.Enabled:=false;
Timer.OnTimer:=TimerEvent;
Timer.Interval:=1000; // выставляете нужную задержку
end;
procedure TMyLabel.CMMouseEnter(var Message : TMessage);
begin
if Assigned(FOnMouseEnter)
then FOnMouseEnter(Self);
Timer.Enabled := true;
end;
procedure TMyLabel.CMMouseLeave(var Message : TMessage);
begin
if Assigned(FOnMouseLeave)
then FOnMouseLeave(Self);
Timer.Enabled := false;
end;
procedure TMyLabel.TimerEvent(Sender: TObject); //действие для примера, изменяем Caption
begin
Caption := 'New caption';
end;
end.