为控件创建MouseEnter和MouseLeave事件(覆盖WndProc,增加对消息的处理)——真简单!

其实很简单:

unit Unit1; 

interface 

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls; 

type 

  TURLLabel = class(TLabel)
    procedure WndProc(var Message : TMessage); override;
  end; 

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end; 

var
  Form1: TForm1; 

implementation 

{$R *.DFM} 

{ TURLLabel } 

procedure TURLLabel.WndProc(var Message: TMessage);
begin
  if (Message.Msg = CM_MOUSEENTER) then
  begin
    Font.Color := clBlue;
    Font.Style := Font.Style + [fsUnderline];
  end;
  if (Message.Msg = CM_MOUSELEAVE) then
  begin
    Font.Color := clWindowText;
    Font.Style := Font.Style - [fsUnderline];
  end;
  inherited WndProc(Message);
end; 

procedure TForm1.FormCreate(Sender: TObject);
begin
  with TURLLabel.Create(Self) do
  begin
    Parent := Self;
    Left := 10;
    Top := 10;
    caption := ‘www.delphi3000.com‘;
    Cursor := crHandPoint;
  end;
end; 

end. 

转自http://www.delphi3000.com/articles/article_1050.asp?SK=

时间: 2024-11-16 18:55:44

为控件创建MouseEnter和MouseLeave事件(覆盖WndProc,增加对消息的处理)——真简单!的相关文章

通过WinForm控件创建的WPF控件无法输入的问题

今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在我的机器上却是好好的. 最开始以为是输入法的问题,弄了好一阵子后,终于找到了原因:虽然这个程序是个WPF程序,但为了复用之前的部分代码,使用着一个WinForm的菜单控件,后续的子窗口都是通过这个WinForm菜单创建的.而用WinForm控件创建的WPF控件可能出现无法正确响应键盘事件的情况. 找到了原因后,一个常规的解决方法是:将WinForm控件换成WP

第二十七课:滚轮事件,mouseenter与mouseleave事件的修复

滚轮事件 jQuery核心库没有对mousewheel事件的差异性进行处理,但作为一个常用的事件,本文讲解一下. mousewheel事件只有火狐浏览器不支持.mousewheel用于取得滚动距离的属性名为event.wheelDelta,往上滚一圈是120,往下滚一圈是-120.在IE6-8下,window无法绑定mousewheel事件,Opera,Safari,Chrome可以. 火狐下使用DOMMouseScroll来代替mousewheel事件.用于取得滚动距离的属性名为event.d

通过C# WinForm控件创建的WPF WIndow窗口控件无法输入的问题

原文:通过WinForm控件创建的WPF 控件无法输入的问题 今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在我的机器上却是好好的. 最开始以为是输入法的问题,弄了好一阵子后,终于找到了原因:虽然这个程序是个WPF程序,但为了复用之前的部分代码,使用着一个WinForm的菜单控件,后续的子窗口都是通过这个WinForm菜单创建的.而用WinForm控件创建的WPF控件可能出现无法正确响应键盘事件的情况. 找

ExtJs内的datefield控件选择日期过后的事件监听select

[摘要]: 选择时间过后我们为什么需要监听事件?一般有这样一种情况,那就是用于比较两个时间大小或者需要判断在哪个时间点上需要做什么样的操作.基于这样的种种情况,我们很有必要琢磨一下datefield控件的日期选择事件了的. 那么我们如何添加日期选择事件呢?针对这样一个问题,网上有很多ExtJs的盆友想到了change事件,就是当文本框内日期值就上一次值来说不同时,触发该事件,change事件添加核心代码如下所示: { xtype: 'datefield', name: 'birthday', f

jQuery同时处理一个控件的click和dblclick事件

1 jQuery.fn.single_double_click = function(single_click_callback, double_click_callback, timeout) { 2 return this.each(function(){ 3 var clicks = 0, self = this; 4 jQuery(this).click(function(event){ 5 clicks++; 6 if (clicks == 1) { 7 setTimeout(func

使用两个 Windows 窗体 DataGridView 控件创建一个主/从窗体

使用 DataGridView 控件的一种最常见方案是"主/详细信息"窗体,这样的窗体可显示两个数据库表之间的父/子关系.如果选择主表中的行,将导致以相应的子数据来更新详细信息表. 主/详细信息窗体很容易实现,这需要使用 DataGridView 控件和 BindingSource 组件之间的交互.在本演练中,将使用两个 DataGridView 控件和两个 BindingSource 组件来生成窗体.窗体将显示 Northwind SQL Server 示例数据库中的两个相关表:Cu

Android自定义控件系列 十:利用添加自定义布局来搞定触摸事件的分发,解决组合界面中特定控件响应特定方向的事件

这个例子是比较有用的,基本上可以说,写完这一次,以后很多情况下,直接拿过来addView一下,然后再addInterceptorView一下,就可以轻轻松松的达到组合界面中特定控件来响应特定方向的触摸事件了. 请尊重原创劳动成果,转载请注明出处:http://blog.csdn.net/cyp331203/article/details/45198549,非允许请勿用于商业或盈利用途,违者必究. 在写Android应用的过程之中,经常会遇到这样的情况:界面包含了多个控件,我们希望触摸在界面上的不

【iOS开发-46】利用UIButton和UIImageView的区别分辨哪些控件有addTarget监听事件这个方法

(1)UIButton和UIImageView的相同点 都能显示图片. (2)UIButton和UIImageView的不同点 --前者不仅能显示图片还能监听事件(就是有addtarget方法) --前者不仅能显示图片还能显示两张图片(就是setImage和setBackgroundImage两个方法) --前者不仅能显示图片还能显示文字(就是setTitle方法) (3)使用场合 --如果仅仅是显示一个图片没其他花头,那就用UIImageView --如果有其他,那么-- 因为如果仅仅用于显示

解决ListView中Item的子控件与Item点击事件冲突

经常会碰到在ListView中点击其中一个Item,会一并触发其子控件的点击事件,例如Item中的Button.ImageButton等,导致了点击Item中Button以外区域也会触发Button点击事件.在网上找了相关方法,这里记录下,亲测可行.. 1.在Item的xml文件根元素中添加属性:android:descendantFocusability="blocksDescendants" 2.在冲突的子控件中添加属性:android:focusable="false&