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

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为控件创建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=

以上是关于为控件创建MouseEnter和MouseLeave事件(覆盖WndProc,增加对消息的处理)——真简单!的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的自定义控件不总是接收 MouseEnter 事件?

鼠标进入与离开的消息(使用CM_MOUSEENTER来判断是否进入控件)

无边框窗体后台创建控件简单通讯

按钮/图像切换资源使用click,MouseEnter和MouseLeave

树形控件如何隐藏vue

【WPF】使用Popup控件做浮窗提示框