关于TButton类型不能响应OnDBClick事件

迷路的小羔羊子

迷路的小羔羊子

2016-02-19 20:47

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的关于TButton类型不能响应OnDBClick事件,过去的都会过去,迎接崭新的开始,释放更美好的自己。

  TButton类型不能响应鼠标双击事件,即使用了显式声明,如:
  TxyButton = class(TButton)
  published
    property OnDBlClick;
  end;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  查了一下源代码:
  procedure TControl.WMLButtonDblClk(var Message: TWMLButtonDblClk);
  begin
    SendCancelMode(Self);
    inherited;
    if csCaptureMouse in ControlStyle then MouseCapture := True;
    if csClickEvents in ControlStyle then DblClick;  //注意这里的csClickEvents
    DoMouseDown(Message, mbLeft, [ssDouble]);
  end

  实际上TControl的子类默认的ControlStyle都带有csClickEvents的:
  constructor TControl.Create(AOwner: TComponent);
  begin
    inherited Create(AOwner);
    FWindowProc := WndProc;
    FControlStyle := [csCaptureMouse, csClickEvents, csSetCaption, csDoubleClicks];
    FFont := TFont.Create;
    ...

  但是TButton类就没那么好运了:
  constructor TButton.Create(AOwner: TComponent);
  begin
    inherited Create(AOwner);
    ControlStyle := [csSetCaption, csDoubleClicks];
   
//注意这里没有csClickEvents
    Width := 75;
    Height := 25;
    TabStop := True;
  end;

  解决方法有两种:

  一、拦截WM_LButtonDBLCLK

  二、在TButton的声明中显式加入csClickEvents

  constructor TxyButton.Create;
  begin
    inherited Create(Form1);
    ControlStyle := ControlStyle + [csClickEvents];
    OnDBLClick := OnDBClick;
  end;

  procedure TxyButton.OnDBClick(Sender: TObject);
  begin
    ShowMessage('DBClick');
  end;
  

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

关于TButton类型不能响应OnDBClick事件

编程语言 网络编程
关于TButton类型不能响应OnDBClick事件

Applet事件响应

编程语言 网络编程
Applet事件响应

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

iOS开发之事件传递响应链

编程语言 网络编程
iOS开发之事件传递响应链

表单Form的submit事件不响应

Web开发
表单Form的submit事件不响应

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

为Java应用程序添加退出事件响应

Java JAVA基础
为Java应用程序添加退出事件响应

关于Javascript中的事件--Event对象

Web开发
关于Javascript中的事件--Event对象

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Win 8系统掌控开机自动启动程序

Win 8系统掌控开机自动启动程序

Dreamweaver的行为体验

Dreamweaver的行为体验
下拉加载更多内容 ↓