Programowanie w języku Delphi » FAQ

OnMouseEnter i OnMouseLeave dla TImage

  • 2012-04-28 22:01
  • 0 komentarzy
  • 1856 odsłon
  • Oceń ten tekst jako pierwszy
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.