为控件创建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,增加对消息的处理)——真简单!的主要内容,如果未能解决你的问题,请参考以下文章
鼠标进入与离开的消息(使用CM_MOUSEENTER来判断是否进入控件)