I suspect you need the override directive on MouseEnter/MouseLeave. I am
making the assumption there are declared on an ancestor somewhere based on
your comments.
M

-----Original Message-----
From: Alistair George [mailto:[EMAIL PROTECTED]
Sent: Friday, 11 June 2004 09:10
To: [EMAIL PROTECTED]
Subject: [DUG] Control properties mouseenter mouseleave not working (my
modified control)


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
_______________________________________________
Delphi mailing list
[EMAIL PROTECTED]
http://ns3.123.co.nz/mailman/listinfo/delphi

Reply via email to