• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi7中处理TEdit鼠标进入离开事件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在盒子论坛上看见一Delpher提出要求说:在鼠标进入TEdit控件时弹出消息框,我扩展了TEdit功能,把它封装成了一个组件,代码如下

 

 

1 unit MyEdit;
2
3  interface
4
5  uses
6 SysUtils, Classes, Controls, StdCtrls,Messages,Dialogs,Forms,Windows;
7
8  type
9 TMsgDlgMode=(Yes_No,YES_NO_CANCEL,OK,OK_CANCEL,RETRY_CANCEL,ABORT_RETRY_IGNORE);
10 TShowDialogEvent = procedure(Sender: TObject;Result:integer) of object;
11
12 TMyEdit = class(TEdit)
13 private
14 { Private declarations }
15 FAutoShowMsgOnMouseEnter:Boolean ;
16 FAutoShowMsgOnMouseLeave:Boolean ;
17 FMsgMsEnter:String;
18 FMsgMsLeave:String;
19 FMsgDlgModeEnter:TMsgDlgMode;
20 FMsgDlgModeLeave:TMsgDlgMode;
21 FMsgResultEnter:Integer;
22 FMsgResultLeave:Integer;
23 FOnMouseEnter: TNotifyEvent;
24 FOnMouseLeave: TNotifyEvent;
25 FAfterMsgDlgEnter:TShowDialogEvent;
26 FAfterMsgDlgLeave:TShowDialogEvent;
27 procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
28 procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
29 protected
30 { Protected declarations }
31 public
32 { Public declarations }
33 property MsgResultEnter:Integer read FMsgResultEnter write FMsgResultEnter;
34 property MsgResultLeave:Integer read FMsgResultLeave write FMsgResultLeave;
35 published
36 { Published declarations }
37 property AutoShowMsgOnMouseEnter:Boolean read FAutoShowMsgOnMouseEnter write FAutoShowMsgOnMouseEnter;
38 property AutoShowMsgOnMouseLeave:Boolean read FAutoShowMsgOnMouseLeave write FAutoShowMsgOnMouseLeave;
39 property MsgMsEnter:String read FMsgMsEnter write FMsgMsEnter;
40 property MsgMsLeave:String read FMsgMsLeave write FMsgMsLeave;
41 property MsgDlgModeEnter:TMsgDlgMode read FMsgDlgModeEnter write FMsgDlgModeEnter;
42 property MsgDlgModeLeave:TMsgDlgMode read FMsgDlgModeLeave write FMsgDlgModeLeave;
43 property OnMouseEnter:TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
44 property OnMouseLeave:TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
45 property AfterMsgDlgEnter:TShowDialogEvent read FAfterMsgDlgEnter write FAfterMsgDlgEnter;
46 property AfterMsgDlgLeave:TShowDialogEvent read FAfterMsgDlgLeave write FAfterMsgDlgLeave;
47 end;
48
49 procedure Register;
50
51 implementation
52
53 procedure Register;
54 begin
55 RegisterComponents('Samples', [TMyEdit]);
56 end;
57
58 procedure TMyEdit.CMMouseEnter(var Message: TMessage);
59 var
60 DlgMode:Integer ;
61 begin
62 if csDesigning in ComponentState then Exit;
63 if Assigned(FOnMouseEnter) then
64 FOnMouseEnter(Self);
65 if FAutoShowMsgOnMouseEnter then
66 begin
67 case FMsgDlgModeEnter of
68 Yes_No:DlgMode:=MB_YESNO;
69 YES_NO_CANCEL:DlgMode:=MB_YESNOCANCEL;
70 OK:DlgMode:=MB_OK;
71 OK_CANCEL:DlgMode:=MB_OKCANCEL;
72 RETRY_CANCEL:DlgMode:=MB_RETRYCANCEL;
73 ABORT_RETRY_IGNORE:DlgMode:=MB_ABORTRETRYIGNORE;
74 end;
75 if FMsgMsEnter='' then
76 FMsgMsEnter:='Mouse Enter';
77 FMsgResultEnter:=Application.MessageBox(PChar(FMsgMsEnter),
78 PChar(Application.Title),
79 DlgMode);
80 if Assigned(FAfterMsgDlgEnter) then
81 FAfterMsgDlgEnter(Self,FMsgResultEnter);
82 end;
83 end;
84
85 procedure TMyEdit.CMMouseLeave(var Message: TMessage);
86 var
87 DlgMode:Integer ;
88 begin
89 if csDesigning in ComponentState then Exit;
90 if Assigned(FOnMouseLeave) then
91 FOnMouseLeave(Self);
92 if FAutoShowMsgOnMouseLeave then
93 begin
94 case FMsgDlgModeLeave of
95 Yes_No:DlgMode:=MB_YESNO;
96 YES_NO_CANCEL:DlgMode:=MB_YESNOCANCEL;
97 OK:DlgMode:=MB_OK;
98 OK_CANCEL:DlgMode:=MB_OKCANCEL;
99 RETRY_CANCEL:DlgMode:=MB_RETRYCANCEL;
100 ABORT_RETRY_IGNORE:DlgMode:=MB_ABORTRETRYIGNORE;
101 end;
102 if FMsgMsLeave='' then
103 FMsgMsLeave:='Mouse Leave';
104 FMsgResultLeave:=Application.MessageBox(PChar(FMsgMsLeave),
105 PChar(Application.Title),
106 DlgMode);
107 if Assigned(FAfterMsgDlgLeave) then
108 FAfterMsgDlgLeave(Self,FMsgResultLeave);
109 end;
110 end;
111
112 end.
113

 组件下载:https://files.cnblogs.com/uws2056/TMyEdit.rar


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab练习程序(图像放大/缩小,双线性插值)发布时间:2022-07-18
下一篇:
MATLAB基础知识发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap