Delphi 滚动条的使用介绍
Delphi 滚动条的使用介绍
1、DELPHI的滚动条默认发送消息格式:
1 2 3 4 5 6 | function TControl . Perform( Msg: Cardinal ; WParam: WPARAM; LParam: LPARAM ): LRESULT; //如:Memo1.Perform(WM_HSCROLL, SB_LEFT, 0); |
2、水平/垂直滚动条:
2.1 水平滚动条 消息 WM_HSCROLL
1 2 3 4 5 6 7 | SendMessage(Memo1 . Handle, WM_HSCROLL, MAKEWPARAM(SB_THUMBPOSITION, 50 ), 0 ); //滚动至此 SendMessage(Memo1 . Handle, WM_HSCROLL, SB_LEFT, 0 ); //左边缘 SendMessage(Memo1 . Handle, WM_HSCROLL, SB_RIGHT, 0 ); //右边缘 SendMessage(Memo1 . Handle, WM_HSCROLL, SB_PAGELEFT, 0 ); //向左翻页 SendMessage(Memo1 . Handle, WM_HSCROLL, SB_PAGERIGHT, 0 ); //向右翻页 SendMessage(Memo1 . Handle, WM_HSCROLL, SB_LINELEFT, 0 ); //向左滚动 SendMessage(Memo1 . Handle, WM_HSCROLL, SB_LINERIGHT, 0 ); //向右滚动 |
2.2 垂直滚动条 消息 WM_VSCROLL
1 2 3 4 5 6 7 | SendMessage(Memo1 . Handle, WM_VSCROLL, MAKEWPARAM(SB_THUMBPOSITION, 50 ), 0 ); //滚动至此 50为位置 滚动到指定行号 SendMessage(Memo1 . Handle, WM_VSCROLL, SB_TOP, 0 ); //顶部 SendMessage(Memo1 . Handle, WM_VSCROLL, SB_BOTTOM, 0 ); //底部 SendMessage(Memo1 . Handle, WM_VSCROLL, SB_PAGEUP, 0 ); //向上翻页 SendMessage(Memo1 . Handle, WM_VSCROLL, SB_PAGEDOWN, 0 ); //向下翻页 SendMessage(Memo1 . Handle, WM_VSCROLL, SB_LINEUP, 0 ); //向上滚动 SendMessage(Memo1 . Handle, WM_VSCROLL, SB_LINEDOWN, 0 ); //向下滚动 |
3、获得滚动条的位置(GetScrollPos函数)
GetScrollPos函数检索指定滚动条中滚动框(拇指)的当前位置。当前位置是一个相对值,取决于当前滚动范围。
例如,如果滚动范围为0到100,并且滚动框位于条的中间,则当前位置为50。
1 2 3 4 | int GetScrollPos( HWND hWnd, int nBar ); |
示例:
1 2 3 4 5 6 7 | var h, v: Integer ; begin h := GetScrollPos(Memo1 . Handle, SB_HORZ); v := GetScrollPos(Memo1 . Handle, SB_VERT); Caption := Format( '水平数值=%d 垂直数值=%d' , [h, v]); end ; |
4、显示和隐藏滚动条
1 2 | ShowScrollBar(Memo1 . Handle,SB_HORZ, false ); //隐藏MEMO水平滚动条 ShowScrollBar(Memo1 . Handle,SB_VERT, false ); //隐藏MEMO垂直滚动条 |
5、判断 滚动条是否出现
1 2 3 4 5 | procedure TForm1 . Button1Click(Sender: TObject); begin if (GetWindowlong(Memo1 . Handle, GWL_STYLE) and WS_VSCROLL) > 0 then ShowMessage( '垂直滚动条显示' ); if (GetWindowlong(Memo1 . Handle, GWL_STYLE) and WS_HSCROLL) > 0 then ShowMessage( '水平滚动条显示' ); end ; |
创建时间:2019.11.18 更新时间:2020.05.18
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!
分类:
Delphi A基础
, Delphi 控N-Memo
标签:
Delphi
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报