Карта сайтаСсылкиКонтакты

Как узнать, что мышь вошла в область компонента

PDF Печать
Статьи

Если Вы когда-нибудь создавали визуальные компоненты, Вы вероятно хотели знать, когда мышь находится над компонентом. Это намного легче, чем Вы можете предположить, используя справку Delphi. Есть два основных сообщения Windows, которые Вы должны использовать: CM_MOUSEENTER и CM_MOUSELEAVE.


type
  TMouseButton = class(TButton)
  protected
    { ... }
    fMouseOut,
    fMouseOver: TNotifyEvent;
    { ... }
    procedure CMMouseEnter(var Message: TMessage); 
        message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); 
        message CM_MOUSELEAVE;
  published
    { ... }
    property OnMouseOut: TNotifyEvent read fMouseOut write fMouseOut;
    property OnMouseOver: TNotifyEvent read fMouseOver write fMouseOver;
  end;
  { ... }
  // Вызываем OnMouseEnter если что-то назначено

  procedure TMouseButton.CMMouseEnter(var Message: TMessage);
  begin
    if Assigned(fMouseOver) then
      OnMouseOver(Self);
    Message.Result := 1; // Отмечаем сообщение
  end;
  { ... }
  // Вызываем OnMouseLeave если что-то назначено

  procedure TMouseButton.CMMouseLeave(var Message: TMessage);
  begin
    if Assigned(fMouseOut) then
      OnMouseOut(Self);
    Message.Result := 1; // Отмечаем сообщение
  end;

 

Добавить комментарий


Защитный код
Обновить