delphi中怎么判断memo滚动条滑到底部了

 我来答
windblast
2017-03-20 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13622
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

Memo 控件是 delphi 中的一个常用控件,用于进行简单的多行纯文本编辑。Memo 控件在初始默认设置时,不显示滚动条,需要手动设置 ScrollBars 属性为 ssBoth、ssVertical、ssHorizontal 用于显示水平、垂直滚动条:



Memo组件提供了文本编辑功能,但并没有直接提供获取滚动条的位置等属性,如果想获取滚动条的位置,可以借用 Windows API 中的相关函数来进行。相关的函数如下:



此 API 函数,经过 delphi 进行转换,定义函数原型如下:



其中 TScrollInfo 的结构定义如下:



结合上述资料信息,可以编写实现代码示例如下:

procedure TForm1.Button1Click(Sender: TObject);
var
  SF: TScrollInfo;
begin
  SF.fMask := SIF_ALL;
  SF.cbSize := SizeOf(SF);
  GetScrollInfo(Memo1.Handle, SB_VERT, SF);
  if SF.nPos + SF.nPage = SF.nMax + 1 then
  begin
    ShowMessage('滚动条到达底部');
  end;

  Memo2.Lines.Add('');
  Memo2.Lines.Add('cbSize: '+IntToStr(Sf.cbSize));
  Memo2.Lines.Add('nMin: '+Sf.nMin.ToString);
  Memo2.Lines.Add('nMax: '+Sf.nMax.ToString);
  Memo2.Lines.Add('nPage: '+IntToStr(Sf.nPage));
  memo2.Lines.Add('nPos: '+Sf.nPos.ToString);
  Memo2.Lines.Add('nTrackPos: '+Sf.nTrackPos.ToString);
end;

运行截图:


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式