zoukankan      html  css  js  c++  java
  • delphi TDbGrid 右键 PopupMenu 菜单只在有数据的地方弹出

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

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

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

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

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

    首先定义一个全局变量:

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

    然后定义MouseDown事件 当鼠标在非数据区的时候会触发事件,这时候将ShowPopMenu设为False

     

    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

    代码
    procedure TForm1.gridAccountMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
    begin
      
    if (Button = mbright) and ShowPopupMenuthen
      
    begin
        
    if (gridAccount.SelectedField <> nilthen  //如果有数据
        
    begin
          //弹出菜单即可
        
    end;
      
    end;
      showpop :
    = True;
    end;

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

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

  • 相关阅读:
    MySQL wrapped 连接池
    学习 memcache 心得
    memcachedb 加 memcached engine无法提高 示例检索的查询速度
    memcached+Mysql(主从) php 编程
    动态设置select与radio的默认值
    JSTL 自定义
    坦克大战 Java版
    给超链接加onclick事件
    图片查看器C#
    备份删除还原数据库
  • 原文地址:https://www.cnblogs.com/heimirror/p/1855841.html
Copyright © 2011-2022 走看看