首页 > Windows开发 > 详细

Delphi: TMemo垂直滚动条自动显示

时间:2019-02-26 20:08:09      阅读:225      评论:0      收藏:0      [点我收藏+]

项目中碰到此问题,之前一直没留意,研究一番用上,以做备忘。参考其它解决方法,不尽完美,自试之,达到效果。

直上代码:

type
  TMemo = class(StdCtrls.TMemo)
  protected
    procedure Change; override;
  end;
{ TMemo }

procedure TMemo.Change;
var
  lc, lh: Integer;
  cvs: TControlCanvas;
begin
  inherited;

  cvs := TControlCanvas.Create;
  try
    cvs.Control := Self;
    cvs.Font.Assign(Font);
    lh := cvs.TextHeight(z) + 2;
  finally
    cvs.Free;
  end;

  lc := Lines.Count;
  if (Text <> ‘‘) and (Text[Length(Text)] = #10) then
    Inc(lc);
  if lc * lh > Height then
  begin
    if ScrollBars = ssNone then
    begin
      ScrollBars := ssVertical;
      Perform(WM_VSCROLL, SB_BOTTOM, 0);
    end;
  end
  else if ScrollBars = ssVertical then
    ScrollBars := ssNone;
end;

技术分享图片

 

Delphi: TMemo垂直滚动条自动显示

原文:https://www.cnblogs.com/jijm123/p/10439600.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!