Внешний вид сайта:

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

Если Вы когда-нибудь создавали визуальные компоненты, Вы вероятно хотели знать, когда мышь находится над компонентом. Это намного легче, чем Вы можете предположить, используя справку 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;

Комментарии

Нет комментариев. Ваш будет первым!