delphi TDbGrid 右键 PopupMenu 菜单只在有数据的地方弹出
2010-10-19 20:55
531 查看
最近用delphi做开发,用到了DbGrid控件,想在控件上点击鼠标右键弹出菜单
关联DbGrid的 Popupmenu 倒是可以实现,但是这样的效果是不管你在哪里单击鼠标右键
只要在DBGrid里面就会弹出菜单,我想只在数据区弹出,网上查了N多了资料,没有找到满意的
偶然间发现,当在DbGrid上单击鼠标右键的时候,当鼠标在数据区的时候不会触发 MouseDown事件
这样我就想用 MouseUp和MouseDown 区分鼠标是不是在数据区 ,然后弹出菜单
首先定义一个全局变量:
var ShowPopupMenu :Boolean = true; //默认情况下可以弹出菜单
然后定义MouseDown事件 当鼠标在非数据区的时候会触发事件,这时候将ShowPopMenu设为False
代码procedure TForm1.gridAccountMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbright) and ShowPopupMenuthen
begin
if (gridAccount.SelectedField <> nil) then //如果有数据
begin
//弹出菜单即可
end;
end;
showpop := True;
end;
这样就可以实现在数据区的时候弹出右键菜单了
注:由于俺是新手只能用这种笨方法实现了,如果哪位仁兄有更好的方法希望能告知 thx.
关联DbGrid的 Popupmenu 倒是可以实现,但是这样的效果是不管你在哪里单击鼠标右键
只要在DBGrid里面就会弹出菜单,我想只在数据区弹出,网上查了N多了资料,没有找到满意的
偶然间发现,当在DbGrid上单击鼠标右键的时候,当鼠标在数据区的时候不会触发 MouseDown事件
这样我就想用 MouseUp和MouseDown 区分鼠标是不是在数据区 ,然后弹出菜单
首先定义一个全局变量:
var ShowPopupMenu :Boolean = true; //默认情况下可以弹出菜单
然后定义MouseDown事件 当鼠标在非数据区的时候会触发事件,这时候将ShowPopMenu设为False
代码procedure TForm1.gridAccountMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbright) and ShowPopupMenuthen
begin
if (gridAccount.SelectedField <> nil) then //如果有数据
begin
//弹出菜单即可
end;
end;
showpop := True;
end;
这样就可以实现在数据区的时候弹出右键菜单了
注:由于俺是新手只能用这种笨方法实现了,如果哪位仁兄有更好的方法希望能告知 thx.
相关文章推荐
- delphi TDbGrid 右键 PopupMenu 菜单只在有数据的地方弹出
- 怎样在Delphi中屏蔽Flash控件的右键弹出菜单
- (转载)delphi实例TDBGrid用右键菜单复制行粘贴行
- 如何从右键弹出菜单中清空删除数据加清空前提问确定
- 怎样在Delphi中屏蔽Flash控件的右键弹出菜单
- Android PopupMenu弹出菜单的实现
- Qt5:创建右键弹出菜单
- WTL::右键弹出菜单和托盘图标
- MFC TreeCtrl树形控件中限定右键点击节点弹出菜单
- vc右键弹出托盘菜单 对应的消息函数内容可以减少置顶
- 使用Delphi开发IE右键菜单扩展
- 使用Delphi开发IE右键菜单扩展
- Delphi XE7实现的任意位置弹出菜单
- Windows将常用工具添加到右键弹出菜单中
- 禁止F5使用刷新禁止右键弹出菜单
- C#中用鼠标右键选中tabpage选项卡 并且弹出右键菜单,实现选项卡的关闭
- Js弹出右键菜单
- 【Android】弹出菜单popupmenu
- delphi 调用系统右键菜单
- MyEclipse 5.1 GA 右键菜单无效(不能弹出右键菜单的问题)