
最近用delphi做开发,用到了DbGrID控件,想在控件上点击鼠标右键d出菜单
关联DbGrID的 Popupmenu 倒是可以实现,但是这样的效果是不管你在哪里单击鼠标右键
只要在DBGrID里面就会d出菜单,我想只在数据区d出,网上查了N多了资料,没有找到满意的
偶然间发现,当在DbGrID上单击鼠标右键的时候,当鼠标在数据区的时候不会触发 MouseDown事件
这样我就想用 MouseUp和MouseDown 区分鼠标是不是在数据区 ,然后d出菜单
首先定义一个全局变量:
var ShowPopupMenu :Boolean = true; //默认情况下可以d出菜单
然后定义MouseDown事件 当鼠标在非数据区的时候会触发事件,这时候将ShowPopMenu设为False
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->procedure TForm1.grIDAccountMouseDown(Sender: TObject;button: TMousebutton; Shift: TShiftState; X,Y: Integer);begin if (button = mbright) then begin ShowPopupMenu := False; end;end;
当鼠标d起的时候在MouseUp事件里判断 ShowPopupMenu 是否为 true
代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->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 //d出菜单即可 end; end; showpop := True;end;
这样就可以实现在数据区的时候d出右键菜单了
注:由于俺是新手只能用这种笨方法实现了,如果哪位仁兄有更好的方法希望能告知 thx.
总结以上是内存溢出为你收集整理的delphi TDbGrid 右键 PopupMenu 菜单只在有数据的地方d出全部内容,希望文章能够帮你解决delphi TDbGrid 右键 PopupMenu 菜单只在有数据的地方d出所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)