Here we go again............
Why cant I get the following mouseenter mouseleave to work? Is it an inheritance
problem please?
unit BlinkLbl;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls;
type
TBlinkLabel = class(TLabel)
private
FBlink: Boolean; { Make the label blink or not }
FBlinkInterval: Word; { Time interval for blinking }
FTimer: TTimer; { Standard timer component }
FOnBlink: TNotifyEvent; { User defined event }
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
procedure SetInterval(Value: Word);
procedure SetBlink(Value: Boolean);
protected
procedure TimerFired(Sender: TObject); dynamic; { Timer event }
procedure BlinkEvent; dynamic; { user defined timer event }
procedure MouseEnter;
procedure MouseLeave;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Blink: Boolean
read FBlink
write SetBlink default False;
property BlinkInterval: Word
read FBlinkInterval
write SetInterval default 500;
property Transparent default True;
{ User defined event }
property OnBlink: TNotifyEvent read FOnBlink write FOnBlink;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;
procedure Register;
implementation
{$IFDEF Win32}
{$R *.R32}
{$ELSE}
{$R *.R16}
{$ENDIF}
constructor TBLinkLabel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FBlinkInterval := 500;
FBlink := False;
{ I don't like default label fonts }
{ That's why I decided to use my favorite one }
Font.Height := -11;
Font.Name := 'MS Sans Serif';
Font.Size := 8;
Font.Style := [fsBold];
Transparent := True; { Make the label transparent }
FTimer := TTimer.Create(Self);
FTimer.OnTimer := TimerFired;
FTimer.Enabled := False;
FTimer.Interval := 500;
end;
procedure TBLinkLabel.SetInterval(Value: Word);
begin
if FBlinkInterval <> Value then
begin
FBlinkInterval := Value;
FTimer.Interval := Value;
end;
end;
procedure TBLinkLabel.SetBlink(Value: Boolean);
begin
if FBlink <> Value then
begin
FBlink := Value;
FTimer.Enabled := Value;
end;
{ Prevent label from being invisible
When the blink becomes off }
if not FTimer.Enabled then
Visible := True
end;
procedure TBLinkLabel.TimerFired(Sender: TObject);
begin
BlinkEvent; { Fire up user defined event }
visible := not visible;
end;
{ User defined event that will be called }
procedure TBLinkLabel.BlinkEvent;
begin
if Assigned(FOnBlink) then
FOnBlink(Self);
end;
destructor TBLinkLabel.Destroy;
begin
FTimer.free;
inherited Destroy;
end;
procedure TBLinkLabel.MouseEnter;
begin
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;
procedure TBLinkLabel.MouseLeave;
begin
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;
procedure Register;
begin
RegisterComponents('Yusas', [TBlinkLabel]);
end;
end.
_______________________________________________
Delphi mailing list
[EMAIL PROTECTED]
http://ns3.123.co.nz/mailman/listinfo/delphi