给构件添加 MouseLeave 事件

  我不明白为何 Borland 的 Delphi 控制不支持 mouse leave 事件.下面是一个简易的例子,它不仅示范了怎样让 TIamge 控制实现 MouseLeave 事件,而且也示范了怎么样建立一个简单的 Delphi 构件.
  
  {
  Delphi 编程新手注意的问题:
    本例是一个 Pascal 单元,请用 MyImg.pas 保存此单元.例子中的方法可应用于其它控制,所以你可以用 TLabel 或 TButton 等其它类来代替 TImage.
  }
  
  unit MyImg;
  interface
  uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
    ExtCtrls;
  type
    TMyImage = class(TImage)
    private
      FOnMouseLeave: TNotifyEvent;
      procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
    protected
    public
    published
      property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
    end;
  
  procedure Register;
  
  implementation
  
  procedure Register;
  begin
    RegisterComponents('Samples', [TMyImage]);
  end;
  
  procedure TMyImage.CMMouseLeave(var Message: TMessage);
  begin
    inherited;
    if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
  end; 
  

`mouseover` 和 `mouseleave` 事件是 JavaScript 中常用的鼠标事件。它们分别在标进入和离开元素时触发当鼠标指针移动到一个元素上时,就会触发 `mouseover` 事件。如果鼠标指针在元素内部移动,不会触发 `mouseover` 事件,除非它在该元素的子元素中移动。这个事件可以用来实现一些需要在鼠标悬停在某个元素上时触发的效果,例如显示工具提示。 当鼠标指针从一个元素移开时,就会触发 `mouseleave` 事件。如果鼠标指针移入该元素的子元素,不会触发 `mouseleave` 事件。这个事件可以用来实现一些需要在鼠标离开某个元素时触发的效果,例如隐藏工具提示。 下面是一个例子,演示了如何使用这两个事件: ```html <!DOCTYPE html> <html> <head> <title>Mouseover and Mouseleave events</title> <style> .box { width: 100px; height: 100px; border: 1px solid #000; } .tooltip { position: absolute; background-color: #FFF; border: 1px solid #000; padding: 5px; display: none; } </style> </head> <body> <div class="box" id="box"></div> <div class="tooltip" id="tooltip">Hello, world!</div> <script> var box = document.getElementById("box"); var tooltip = document.getElementById("tooltip"); box.addEventListener("mouseover", function() { tooltip.style.display = "block"; }); box.addEventListener("mouseleave", function() { tooltip.style.display = "none"; }); </script> </body> </html> ``` 在这个例子中,当鼠标指针移动到名为 `box` 的元素上时,会显示一个包含文本“Hello, world!”的工具提示。当鼠标指针离开该元素时,工具提示会隐藏。这是通过在 `box` 元素上添加 `mouseover` 和 `mouseleave` 事件监听器来实现的。当 `mouseover` 事件触发时,会将 `tooltip` 元素的 `display` 样式设置为 `block`,使其显示出来;当 `mouseleave` 事件触发时,会将 `tooltip` 元素的 `display` 样式设置为 `none`,使其隐藏起来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值