在mwEdit控件中,如何自动滚屏.(100分)

  • 主题发起人 主题发起人 yilijun
  • 开始时间 开始时间
Y

yilijun

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好:
我在编程时,用到了mwEdit控件.由于要实时的对收到的数据进行监测,需将这些数据
添加至TmwCustomEdit的末尾.添加至末尾非常的简单,但如何使该控件总是显示最后以行
即如何实现顺滑滚屏,请各位大虾指教.
我原来是用JumpMemo控件,我对该控件稍微改动了一下,能够实现滚屏,但抖动得厉害
特别是数据量大时,屏幕闪个不停.用Memo虽能够实现顺滑滚屏,但容量有限,也不得不放
弃.
我用mwEdit参照了已答问题中的滚屏技术,如
SendMessage(mwCustomEdit1.Handle,EM_SCROLL,SB_BOTTOM,0);
postmessage(mwCustomEdit1.handle, WM_VSCROLL, 0, SB_LINEDOWN);
但似乎并不能实现.
如果能在控件中添加一行自动滚屏一行,那是最好的.
 
mwEdit是什么东西,有什么好用的功能?能不能Email给我
devuser@sina.com
 
可以从深度历险种下载嘛
 
yilijun:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
postmessage(mwCustomEdit1.handle, WM_VSCROLL, 1, SB_LINEDOWN);
 
问一下:您的版本mwedit里增加自动换行了吗?
 
自动滚动我已经实现了,需改动程序.Seoul_BJ的方法似乎不行.
自动换行我还没实现,只有另外处理了.
 
它的原代码5000行,太杂了
 

mwCustomEdit1.SelStart := Length(mwCustomEdit1.Text);
SendMessage(mwCustomEdit1.Handle, EM_SCROLLCARET, 0, 0);
可以很顺滑滚屏,
也会很快的滚到光标所在页面
如果是要自动滚一行,在你只添加一行的前提下,你可以用
mwCustomEdit1.SelStart := Length(mwCustomEdit1.Text);
...
...
...
SendMessage(mwCustomEdit1.Handle, WM_KEYDOWN, VK_DOWN, 0);
 
>自动滚动我已经实现了,需改动程序
平滑滚动你是如何实现的,可否贴出来?
 
多人接受答案了。
 
在控件中再增加一过程:

procedure TmwCustomEdit.Scroll;
var
CaretNew:TPoint;
begin
CaretNew := Point(1, Lines.Count);
if (CaretNew.Y > 0) then
CaretNew.X := Length(Lines[CaretNew.Y - 1]) + 1;
MoveCaretAndSelection(CaretXY, CaretNew, False);
Update;
end;
在引用时调用该过程即可实现顺滑滚屏。
但还是不知道怎样自动换行

 
后退
顶部