易语言高表格右键选中行并弹出菜单源码
.版本 2
.支持库 eGrid
窗口组件句柄 = 高级表格.取窗口句柄 ()  ' 要处理的窗口或组件句柄
原函数地址 = 设置窗口信息_ (窗口组件句柄, -4, 到整数 (&消息处理))  ' #GWL_WNDPROC =-4
易语言轰炸机源码最新
.子程序 消息处理, 整数型, , 新窗口过程(自定义消息处理函数)
.参数 hWnd, 整数型
.参数 Msg, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.局部变量 滚动信息, 滚动条信息
.局部变量 X坐标, 整数型
.局部变量 Y坐标, 整数型
.局部变量 鼠标所在行号, 整数型
.局部变量 选择起始行, 整数型
.局部变量 选择终止行, 整数型
.局部变量 页首行行号, 整数型
.局部变量 目标行坐标, 整数型
.局部变量 页首行顶边位置, 整数型
.局部变量 循环变量, 整数型
' /////////////////////////////////////////////////////////////////////////////////////////////
' 高级表格自身响应右键抬起,不响应右键按下,所以仅处理右键抬起
' 每页第一行顶边线总是对齐的,而第一行的顶边位置总是≥nPos,这就为鼠标定位提供了依据
.如果真 (Msg = #WM_RBUTTONUP)
    Y坐标 = 右移 (lParam, 16)  ' 抛弃掉低字节
    X坐标 = 位与 (lParam, 65535)  ' 屏蔽掉高字节
    滚动信息.cbSize = 28  ' 取滚动条当前位置
    滚动信息.fMask = #SIF_ALL
    取滚动条信息_ (hWnd, #SB_VERT, 滚动信息)
    页首行顶边位置 = 0
    .计次循环首 (高级表格.行数 - 1, 循环变量)
        页首行顶边位置 = 页首行顶边位置 + 高级表格.取行高 (循环变量 - 1)
        .如果真 (页首行顶边位置 ≥ 滚动信息.nPos + 高级表格.取行高 (0))
            页首行行号 = 循环变量
            跳出循环 ()
        .如果真结束
    .计次循环尾 ()
    目标行坐标 = 高级表格.取行高 (0)
    .计次循环首 (高级表格.行数 - 页首行行号, 循环变量)
        目标行坐标 = 目标行坐标 + 高级表格.取行高 (循环变量 - 1 + 页首行行号)
        .如果真 (目标行坐标 > Y坐标)
            鼠标所在行号 = 循环变量 - 1 + 页首行行号
            跳出循环 ()
        .如果真结束
    .计次循环尾 ()
    选择起始行 = 高级表格.取选择起始行 ()  ' 置光标并弹出菜单
    选择终止行 = 高级表格.取选择终止行 ()
    .如果 (Y坐标 < 高级表格.取行高 (0))
        高级表格.全部选择 ()
    .否则
        .如果 (选择起始行 ≠ 选择终止行)
            .如果真 (鼠标所在行号 < 选择起始行 或 鼠标所在行号 > 选择终止行)
                高级表格.置光标 (鼠标所在行号, 0)
            .如果真结束
        .否则
            高级表格.置光标 (鼠标所在行号, 0)
        .如果结束
    .如果结束
    高级表格.弹出菜单 (编辑, 取鼠标水平位置 () + 20, 取鼠标垂直位置 () + 10)
    Msg = 0  ' 屏蔽高级表格自身右键抬起事件’
.如果真结束
返回 (呼叫窗口函数地址_ (原函数地址, hWnd, Msg, wParam, lParam))  ' 调用旧窗口过程

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。