delphi TDbGrid 右键 PopupMenu 菜单只在有数据的地方d出

delphi TDbGrid 右键 PopupMenu 菜单只在有数据的地方d出,第1张

概述最近用delphi做开发,用到了DbGrid控件,想在控件上点击鼠标右键d出菜单 关联DbGrid的 Popupmenu 倒是可以实现,但是这样的效果是不管你在哪里单击鼠标右键 只要在DBGrid里面就会d出菜单,我想只在数据区d出,网上查了N多了资料,没有找到满意的 偶然间发现,当在DbGrid上单击鼠标右键的时候,当鼠标在数据区的时候不会触发 MouseDown事件 这样我就想用 MouseU

最近用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出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1253925.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存