SliderMemo 控件使用说明
袁卫国 2019 年 4 月
SliderMemo 继 承 于 Memo 用 于 滚动 显 示 文 本 文 件 。 本 SliderMemo 控 件 是 从
LinDesheng 2002-07 版本改进而来。原版只是一个简单的示范程序,不能在运行中改变颜色、
字体等基本属性,最大的缺点是文字滚动快或窗口面积大时文字闪动惨不忍睹。基本上无什
么实用价值。
因此,本人在原版基础上作了较大的扩展,最创新的是引入了缓冲窗口。将文字输出过
程在缓冲窗口上完成,再一次性将整个画布复制到控件画布上,完全消除了闪烁。具有很强
的实用价值。
SliderMemo 除了继承 Memo 的所有属性、方法及事件外,还增加了以下内容:
属性(property):
Buffering: Boolean 缓冲窗口有效状态。该属性为只读,为真表示缓冲窗口存在并已起作用。
否则表示无缓冲窗口。
BufWindow: HWND 缓冲窗口的句柄。可创建一个新的标准窗口,例如 Form2。 并设置
为无边框窗口:
Form2.BorderStyle:=bsNone;
再在控件所在单元引用 Form2 所在单元,例如 Unit2:
implementation
uses Unit2;
然后将 Form2 的句柄赋予 BufWindow:
SliderMemo1.BufWindow := Form2.Handle;
这样设定后控件将自动把 Form2 所为缓冲窗口在上面输出文字,待文字输出完成后在
整体复制到控件窗口。Buffering 状态为真。
如果 BufWindow=0 或者 BufWindow 句柄代表的窗口无效,则直接在控件窗口中输出文
字。Buffering 状态为假。
ScrollTime: integer 刷新周期(毫秒)。为零停止滚动,但不影响 Scroll 状态。
ScrollStep: integer 刷新步长(像素)。步长为正向上滚动;为负则向下滚动;为零停止滚
动,但不影响 Scroll 状态
Scroll: Boolean 读滚动状态或写滚动状态。读取滚动状态为真表示滚动操作正在进行,否
则滚动操作处于停止状态。写滚动状态 True 等同于 Start 方法、False 等同于 Stop 方法。
RowSpacing: integer 行间距(上一行底与下一行顶之间的间隔)。
方法(Procedure):
Procedure ReScroll; 从头开始滚动
Procedure Start; 开始滚动
Procedure Stop; 停止滚动
事件(Event):
OnLoop 滚动循环事件
控件安装:
可将控件 SliderMemo.pas 纳入 dclusr 项目中安装。具体使用方法参见 demo。