易语言exui超级列表框项目鼠标指针悬停显示文本
易语言exui超级列表框项目鼠标指针悬停显示文本在易语言中,使用EXUI超级列表框实现鼠标悬停显示项目文本(ToolTip),可以通过以下方法实现:
方法一:使用EXUI自带的提示功能
.版本 2
.支持库 ExuiKrnln
.子程序 _超级列表框1_鼠标位置移动, 逻辑型
.参数 坐标x, 整数型
.参数 坐标y, 整数型
.参数 标记值, 整数型
.局部变量 项目索引, 整数型
.局部变量 列索引, 整数型
' 获取鼠标位置对应的项目
项目索引 = 超级列表框1.取项目索引自坐标 (坐标x, 坐标y, 列索引)
.如果真 (项目索引 ≠ -1)
' 获取项目文本
超级列表框1.置提示文本 (项目索引, 列索引, "这里是提示内容")
' 或者直接显示项目文本
.局部变量 文本内容, 文本型
文本内容 = 超级列表框1.取项目文本 (项目索引, 列索引)
超级列表框1.置提示文本 (项目索引, 列索引, 文本内容)
.如果真结束
返回 (假)
方法二:使用Windows API实现更灵活的ToolTip
.版本 2
.支持库 ExuiKrnln
.支持库 spec
.程序集 窗口程序集_启动窗口
.程序集变量 上次项目索引, 整数型
.程序集变量 ToolTip句柄, 整数型
.子程序 __启动窗口_创建完毕
' 创建ToolTip控件
ToolTip句柄 = 创建ToolTip控件 (超级列表框1.取窗口句柄 ())
上次项目索引 = -1
.子程序 _超级列表框1_鼠标位置移动, 逻辑型
.参数 坐标x, 整数型
.参数 坐标y, 整数型
.参数 标记值, 整数型
.局部变量 项目索引, 整数型
.局部变量 列索引, 整数型
项目索引 = 超级列表框1.取项目索引自坐标 (坐标x, 坐标y, 列索引)
.如果 (项目索引 ≠ -1)
.如果真 (项目索引 ≠ 上次项目索引)
' 显示ToolTip
.局部变量 提示文本, 文本型
.局部变量 项目文本, 文本型
.局部变量 矩形区域, 矩形
.局部变量 坐标, 精易_坐标
项目文本 = 超级列表框1.取项目文本 (项目索引, 列索引)
提示文本 = "项目索引: " + 到文本(项目索引) + #换行符 + "列索引: " + 到文本(列索引) + #换行符 + "内容: " + 项目文本
' 获取项目位置
超级列表框1.取项目矩形 (项目索引, 列索引, 矩形区域.左边, 矩形区域.顶边, 矩形区域.右边, 矩形区域.底边)
' 显示ToolTip
显示ToolTip提示 (ToolTip句柄, 提示文本, 矩形区域.左边, 矩形区域.顶边 - 30)
上次项目索引 = 项目索引
.如果真结束
.否则
.如果真 (上次项目索引 ≠ -1)
隐藏ToolTip (ToolTip句柄)
上次项目索引 = -1
.如果真结束
.如果结束
返回 (假)
' API函数声明
.DLL命令 创建ToolTip控件, 整数型, "comctl32.dll", "CreateWindowExA"
.参数 dwExStyle, 整数型
.参数 lpClassName, 文本型
.参数 lpWindowName, 文本型
.参数 dwStyle, 整数型
.参数 x, 整数型
.参数 y, 整数型
.参数 nWidth, 整数型
.参数 nHeight, 整数型
.参数 hWndParent, 整数型
.参数 hMenu, 整数型
.参数 hInstance, 整数型
.参数 lpParam, 整数型
.DLL命令 显示ToolTip提示, , "user32.dll", "SendMessageA"
.参数 hWnd, 整数型
.参数 Msg, 整数型, , 1048 (TTM_UPDATETIPTEXT)
.参数 wParam, 整数型
.参数 lParam, 整数型
.DLL命令 隐藏ToolTip, , "user32.dll", "SendMessageA"
.参数 hWnd, 整数型
.参数 Msg, 整数型, , 1041 (TTM_POP)
.参数 wParam, 整数型
.参数 lParam, 整数型
方法三:使用EXUI结合定时器实现
.版本 2
.支持库 ExuiKrnln
.程序集 窗口程序集_启动窗口
.程序集变量 悬停计时, 整数型
.程序集变量 当前项目索引, 整数型
.程序集变量 当前列索引, 整数型
.子程序 __启动窗口_创建完毕
悬停计时 = 0
当前项目索引 = -1
.子程序 _超级列表框1_鼠标位置移动, 逻辑型
.参数 坐标x, 整数型
.参数 坐标y, 整数型
.参数 标记值, 整数型
.局部变量 项目索引, 整数型
.局部变量 列索引, 整数型
项目索引 = 超级列表框1.取项目索引自坐标 (坐标x, 坐标y, 列索引)
.如果真 (项目索引 ≠ 当前项目索引)
悬停计时 = 0
当前项目索引 = 项目索引
当前列索引 = 列索引
.如果真结束
返回 (假)
.子程序 _时钟1_周期事件
.如果真 (当前项目索引 ≠ -1)
悬停计时 = 悬停计时 + 1
.如果真 (悬停计时 ≥ 10)' 悬停1秒后显示提示
.局部变量 项目文本, 文本型
项目文本 = 超级列表框1.取项目文本 (当前项目索引, 当前列索引)
' 在鼠标位置显示提示
.局部变量 鼠标位置, 精易_坐标
取鼠标位置 (鼠标位置.x, 鼠标位置.y)
标签_提示.可视 = 真
标签_提示.左边 = 鼠标位置.x + 10
标签_提示.顶边 = 鼠标位置.y + 10
标签_提示.标题 = "项目内容:" + 项目文本
悬停计时 = 0
.如果真结束
.如果真结束
.子程序 _超级列表框1_鼠标左键被放开, 逻辑型
.参数 坐标x, 整数型
.参数 坐标y, 整数型
.参数 功能键状态, 整数型
标签_提示.可视 = 假
当前项目索引 = -1
返回 (假)
方法四:简单实现(适合少量数据)
.版本 2
.支持库 ExuiKrnln
.子程序 _超级列表框1_鼠标位置移动, 逻辑型
.参数 坐标x, 整数型
.参数 坐标y, 整数型
.参数 标记值, 整数型
.局部变量 项目索引, 整数型
.局部变量 列索引, 整数型
.局部变量 提示信息, 文本型
项目索引 = 超级列表框1.取项目索引自坐标 (坐标x, 坐标y, 列索引)
.如果真 (项目索引 ≠ -1)
' 构建详细提示信息
提示信息 = "═══════════════════" + #换行符
提示信息 = 提示信息 + "项目详情" + #换行符
提示信息 = 提示信息 + "═══════════════════" + #换行符
.计次循环首 (超级列表框1.取列数 (), i)
提示信息 = 提示信息 + "列" + 到文本(i) + ": " + 超级列表框1.取项目文本 (项目索引, i - 1) + #换行符
.计次循环尾
提示信息 = 提示信息 + "═══════════════════"
' 设置ToolTip
超级列表框1.置提示文本 (项目索引, 列索引, 提示信息)
.如果真结束
返回 (假)
注意事项:
EXUI版本:确保使用的是较新版本的EXUI支持库
性能优化:对于大量数据,建议使用方法二或方法三
样式自定义:可以通过API进一步自定义ToolTip的外观
延迟显示:建议添加延迟显示机制,避免鼠标快速移动时频繁提示
选择哪种方法取决于你的具体需求:
方法一最简单,但功能有限
方法二最灵活,可完全自定义
方法三适合需要延迟显示的场景
方法四适合显示项目完整信息
易语言exui超级列表框项目鼠标指针悬停显示文本
页:
[1]