如何使窗口滚动条始终在底部滚动(100分)

  • 主题发起人 主题发起人 sunnysheng
  • 开始时间 开始时间
S

sunnysheng

Unregistered / Unconfirmed
GUEST, unregistred user!
我编了个串口接收程序,用RichEdit1.text:= RichEdit1.text + 'x';增加到RichEdit里,<br>滚动条默认老是在顶部,想要看到即时接收到的数据,又要避免滚动条闪动的厉害,我该如何解决使窗口滚动条始终在底部滚动。
 
改用add就行了<br><br>不要用RichEdit1.text:= RichEdit1.text + 'x'<br><br>用RichEdit1.Lines.Add('x')
 
用指针一直指向最后一条记录便可以了!或者你控制richedit只显示你希望看到的数据数便可以了!
 
添加完数据后,<br>SendMessage(RichEdit1.Handle, WM_VSCROLL, SB_BOTTOM, 0);
 
多谢各位。不过各位的方法我也试过。<br><br>mafan:谢谢你,你的方法解决了滚动条始终在底部并不上下闪动的问题,但我需要数据尾随(一个接一个,其间不要回车和换行)。请问如何解决。<br><br>PhoenixPower:你回答的就是我想的另一种方法,也正是我想问该如何实现的。<br><br>独帅:你的方法我早已试过,用RichEdit1.text:= RichEdit1.text + 'x'增加后滚动条就跑到上面去了,在用SendMessage(RichEdit1.Handle, WM_VSCROLL, SB_BOTTOM, 0);滚动条的确是下来了,但是如果重复此操作是不是就出现了我讲的闪动厉害的问题了呢?<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;谢谢个位。敬候佳音<br><br><br>
 
你这样写入数据:<br>//RichEdit1.text:= RichEdit1.text + 'x';<br>var<br>&nbsp; s: String;<br>begin<br>&nbsp; RichEdit1.SelStart := -1;<br>&nbsp; s := 's';//这里是要写入的内容<br>&nbsp; SendMessage(RichEdit1.Handle, EM_REPLACESEL, 1, LongInt(s));<br>end;<br><br>现在没有闪烁,滚动条也会一直在底部
 
RichEdit1.SelStart:= 65535;<br>RichEdit1.SelLength:= 0;<br>RichEDit1.SelText:= 'X';<br>同 &nbsp;独帅 的方法<br>//RichEdit1.Text:= RickEdit1.Text+'X'是最差的方法,<br>他把所有的文字从CommCtrl中拷贝过来,增加后在拷贝回去,这样CommCtrl就认为完全重新赋值,他会下把原来的文字删掉,这样ScrollBar的POS就会变化0了,然后再重新加入新的文字,<br>
 
楼上的,好!!!厉害!!高手!!
 
to zjan521:你的程序<br><br>RichEdit1.SelStart:= 65535;<br>//如果RichEdit里面的字符数目超过65535的话,<br>//这一句使RichEdit中的光标处于第65535个字符后面,而不是在最后面<br>//如果要将RichEdit中的光标置于最后面,RichEdit1.SelStart := -1; 就可以了<br>RichEdit1.SelLength:= 0; &nbsp;<br>//这一句使RichEdit中不要选中任何字符,如果用RichEdit1.SelStart := -1; 同时就达到目的了<br>
 
多谢zjan521和独帅,我的问题基本解决。高手!!!。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部