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


    最近用delphi做开发,用到了DbGrid控件,想在控件上点击鼠标右键弹出菜单

    关联DbGrid的 Popupmenu 倒是可以实现,但是这样的效果是不管你在哪里单击鼠标右键

    只要在DBGrid里面就会弹出菜单,我想只在数据区弹出,网上查了N多了资料,没有找到满意的

    偶然间发现,当在DbGrid上单击鼠标右键的时候,当鼠标在数据区的时候不会触发 MouseDown事件

    这样我就想用 MouseUp和MouseDown 区分鼠标是不是在数据区 ,然后弹出菜单

    首先定义一个全局变量:

    var ShowPopupMenu :Boolean = true; //默认情况下可以弹出菜单

    然后定义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;

    当鼠标弹起的时候在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
          //弹出菜单即可
        end;
      end;
      showpop := True;
    end;

    这样就可以实现在数据区的时候弹出右键菜单了

    注:由于俺是新手只能用这种笨方法实现了,如果哪位仁兄有更好的方法希望能告知 thx. 

  • 相关阅读:
    magento 产品目录全部修改 :
    zencart 支付流程总结
    去掉 power by ecshop的方法
    ECSHOP实现收货国家省市由选择下拉菜单改为手动
    MYSQL的随机抽取实现方法
    Ecshop中导航栏中使用二级菜单显示并调用子分类
    打包遇到的问题
    jQuery is not defined问题
    实现表格中每行展开收起内容
    jQuery对象与DOM对象的相互转化
  • 原文地址:https://www.cnblogs.com/jijm123/p/10990263.html
Copyright © 2020-2023  润新知