OnMouseEnter i OnMouseLeave dla TImage

PiXel

Zauważyliście pewnie, że TLabel posiada zdarzenia OnMouseEnter i OnMouseLeave. Są wywołane wtedy gdy mysz najedzie i opuści komponent. Niestety Borland spieprzył sprawę i nie dał tych zdarzeń dla TImage co często bywa niewygodne. Zrobimy nowy komponent TImageHover który jest potomny TImage i wyposażymy go w te zdarzenia.

Tworzymy nowy unit i zapisujemy jako ImageHover.pas.

unit ImageHover;

interface

uses
  Controls, ExtCtrls, Classes, Messages;

type
  TImageHover = class(TImage)
    private
      FEnter: TNotifyEvent;
      FLeave: TNotifyEvent;
      procedure CMMouseEnter(var msg: TMessage); message CM_MOUSEENTER;
      procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;
    published
      property OnMouseEnter: TNotifyEvent read FEnter write FEnter;
      property OnMouseLeave: TNotifyEvent read FLeave write FLeave;
  end;

procedure Register;

implementation

procedure TImageHover.CMMouseEnter(var msg: TMessage);
begin
  if Assigned(FEnter) then FEnter(Self);
end;

procedure TImageHover.CMMouseLeave(var msg: TMessage);
begin
  if Assigned(FLeave) then FLeave(Self);
end;

procedure Register;
begin
  RegisterComponents('Win32', [TImageHover]);
end;

end.

Następnie Component -> Install Component i klikamy ok. Następnie klikamy Compile na otwartej paczce. Nowy komponent zostanie zainstalowany na zakładce Win32.

0 komentarzy