CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

===========鼠标右键问题===============

楼主lovefox_zoe(爱情狐狸)2005-08-17 08:41:28 在 Delphi / VCL组件开发及应用 提问

当鼠标停留在某个按钮或者组件上时,该按钮或组件有自己的鼠标事件代码,此时点击鼠标右键,我不想执行该按钮或组件的鼠标按键代码,而是希望执行其他代码,如何实现啊。  
   
  好像老是会被按钮捕捉到,难道用钩子?太麻烦了吧。 问题点数:10、回复次数:13Top

1 楼lovefox_zoe(爱情狐狸)回复于 2005-08-17 11:35:52 得分 0

自己顶下。Top

2 楼jackie168(http://soft.eastrise.net)回复于 2005-08-17 11:39:56 得分 0

button_x.click;Top

3 楼lovefox_zoe(爱情狐狸)回复于 2005-08-17 12:13:16 得分 0

楼上老大,我不想执行组件的鼠标事件啊。Top

4 楼lovefox_zoe(爱情狐狸)回复于 2005-08-17 15:36:47 得分 0

想执行其他事件啊。Top

5 楼lovefox_zoe(爱情狐狸)回复于 2005-08-17 23:31:05 得分 0

比如:有一个panel,上面放了几个button,每个butoon有自己的鼠标Onmousedown事件,不过Onmousedown只实现其中左键事件。我希望,在panel范围内,不管鼠标停留在哪个组件上方,当点击右键的时候都可以执行某个过程或者函数。Top

6 楼decal(我用DELPHI)回复于 2005-08-17 23:56:22 得分 0

对俺这种初学者来说,有点难度!Top

7 楼hangguojun(布丁)回复于 2005-08-18 08:06:03 得分 5

在OnMouseDown事件中  
   
  procedure   TForm1.Button1MouseDown(Sender:   TObject;   Button:   TMouseButton;  
      Shift:   TShiftState;   X,   Y:   Integer);  
  begin  
      if   Button=mbRight   then  
          ShowMessage('你按了鼠标右键');  
  end;  
  Top

8 楼lovefox_zoe(爱情狐狸)回复于 2005-08-18 08:08:43 得分 0

楼上大哥,你的这个我知道,关键是,当鼠标停留在button1时,我不想执行button的代码啊。我想执行panel的代码啊。如果panel上有好多button,一个个写右键代码,那还不得累死。Top

9 楼lovefox_zoe(爱情狐狸)回复于 2005-08-18 17:51:51 得分 0

procedure   TForm1.WndProc(var   Message:   TMessage);  
  begin  
      //WM_RBUTTONDOWN   =   $0204;  
      inherited   WndProc(Message);  
      with   Message   do  
          if   (Msg   =   WM_RBUTTONDOWN   )   then  
          begin  
          showmessage('你点击了右键--------------');  
          end;  
   
  end;  
   
  我用如上代码,结果,只要鼠标是在原本有鼠标事件的地方点击右键,就会触发两次消息(比如有个BUTTON有鼠标的mousedown事件,不过该button是判断鼠标的双击),在窗体上用右键没有问题。  
   
  怎么回事。我不是只判断button的双击嘛,而且是左键双击,为什么会触发消息的右键呢?Top

10 楼lovefox_zoe(爱情狐狸)回复于 2005-08-19 23:07:16 得分 0

还有就是有两个PANEL,我在其中一个PANEL1的ONEXIT写代码PANEL1.hide,表示失去焦点的时候,隐藏自己,可我点击PANEL2,该PANEL2无法获取焦点?  
   
  可是PANEL有SETFOCUS的功能啊。为什么点击它无法获取焦点呢?Top

11 楼Idle_(阿呆)回复于 2005-08-20 09:37:10 得分 5

1.   如果你不希望原来事件执行,   那么就截WM_LBUTTONDOWN或WM_RBUTTONDOWN消息直接进入你自己的处理过程,处理完后不要调用inherited。  
  2.   设置Panel.TabStop:=true,点击Panel就能获得焦点了Top

12 楼lovefox_zoe(爱情狐狸)回复于 2005-08-21 09:47:51 得分 0

to   楼上大哥:  
   
  设置TabStop属性后,点击并不能获取焦点啊Top

13 楼lovefox_zoe(爱情狐狸)回复于 2005-08-21 10:02:03 得分 0

还要在panel里面写代码嘛。TabStop应该是用键盘Tab的时候获取焦点吧。Top

相关问题

  • 右键鼠标问题
  • 禁用鼠标右键
  • 鼠标右键失效
  • TreeView鼠标右键问题?
  • 鼠标右键问题
  • 如何屏蔽鼠标右键?
  • 截获鼠标右键点击
  • 删除鼠标右键里的选项?
  • 高手相助!鼠标右键问题
  • 求助,关于鼠标右键

关键词

  • 鼠标
  • 代码
  • 组件
  • 执行
  • 消息
  • 右键
  • panel
  • 点击
  • 事件
  • 按钮

得分解答快速导航

  • 帖主:lovefox_zoe
  • hangguojun
  • Idle_

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo