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

2016-02-19 20:47 19 1 收藏

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

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问http://www.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

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

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

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

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


来源:http://www.tulaoshi.com/n/20160219/1624543.html

延伸阅读
Subview的事件响应 在view的层级里面,默认情况下subview是可以显示到其父view的frame区域以外的,通过设置clipToBounds属性为YES,可以限制subview的显示区域。但是touch在各个UIView中传递的时候,区域时限制在view的frame内,此处包含两个信息:1、在当前view的frame以外所做的操作是不会传递到该view中的,这一点很容易理解。2、如果touc...
不要找物质欲过重、又不想自食其力的对象 物质欲望人皆有之,但是过重就是灾祸。关键词:物质欲重、不自食其力。比如,一些男男女女,想住大屋,开好车,自己不拿出行动,却总想从父母那里挤出来、把父母口袋钱逼出来。轻则生气、重则逼的父母寻死觅活,后悔生了TA这个孩子。结果重物欲享受,到头来潦倒如乞丐,到处欠债不还,成...
标签: flash教程
响应键盘的方法作为AS中的一个重要组成部分,在如今已经越来越广泛的使用,尤其是在 FLASH游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法主要的四种,分别是: 1、利用按钮进行检测 2、利用KEY对象 3、利用键盘侦听的方法 4、利用影片剪辑的keyUp和keyDown事件来实现响应键盘 只有熟练...
一、类型转换的意义 对于一个智能的MVC框架而言,不可避免的需要实现类型转换.因为B/S(浏览器/服务器)结构应用的请求参数是通过浏览器发送到服务器的,这些参数不可能有丰富的数据类型,因此必须在服务器端完成数据类型的转换 MVC框架是一个表现层解决方案,理应提供类型转换的支持,Struts2提供了功能非常强大的类型转换支持. 二、表现层数据...
一、占有欲特别强的女人不能娶 有的女人谈恋爱时要求男人以她为中心,把自己当成了“公主”,最好是男朋友能够随叫随到,时刻守候在她的身边,在所有的时间里,男朋友最好能够在她的视线范围内。结婚后,最好老公除了上班,不能有任何应酬和活动,下班后应该在规定的时间内回到她的身边。这种女人总是感到她就是你全部生活的中心...

经验教程

309

收藏

78
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部