CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

怎么样使RichEdit自动滚屏?

楼主starwalker(飞)2002-08-24 11:23:42 在 C++ Builder / 基础类 提问

不断用   RichEdit1->Lines->Add();   向RichEdit添加文字,怎么样让RichEdit自动滚屏,不用手动滚动垂直滚动条,使最后添加的文字显示出来? 问题点数:100、回复次数:15Top

1 楼advanced(超越)回复于 2002-08-24 11:43:29 得分 0

本来就可以自动显示出来呀。我刚试过,吧RichEdit的ScrollBar设为ssVertical。就可以了。Top

2 楼kingcaiyao(aking)回复于 2002-08-24 12:02:59 得分 0

你设置ScrollBar属性为ssVertical,那么RichEdit始终显示的就是最后添加的文字,比如说:  
  void   __fastcall   TForm1::MyButton1Click(TObject   *Sender)  
  {  
   
          for(int   i=0;i<1000;i++)  
          {  
                  RichEdit1->Lines->Add("YourString"+IntToStr(i));  
          }  
   
  }  
  最后添加的文字"YourString999"就可以显示出来。  
  Top

3 楼zhuJIM(笨笨)回复于 2002-08-24 12:12:41 得分 0

好像有问题,我第一次试的时候,像上面两位说的那样,直接就可以显示最后的文字;本着认真负责的态度,我重新新建一个工程,再试一次就不行了,始终显示的是第一行,我想贴主遇到的就是这个问题,我正在努力中……Top

4 楼kingcaiyao(aking)回复于 2002-08-24 13:34:25 得分 0

To   楼上:  
  如果出现你所说的情况,在你添加完字符串后,再加上一行:  
  ::PostMessage(YourForm->Handle,WM_VSCROLL,SB_BOTTOM,RichEdit1->Handle);  
  Top

5 楼kingcaiyao(aking)回复于 2002-08-24 13:37:27 得分 0

即是说这样写:  
  void   __fastcall   TForm1::MyButton1Click(TObject   *Sender)  
  {  
   
          for(int   i=0;i<1000;i++)  
          {  
                  RichEdit1->Lines->Add("YourString"+IntToStr(i));  
          }  
   
  }  
  ::PostMessage(YourForm->Handle,WM_VSCROLL,SB_BOTTOM,RichEdit1->Handle);  
   
   
  Top

6 楼kingcaiyao(aking)回复于 2002-08-24 14:01:22 得分 30

上面的写错了一句,应该是:  
  ::PostMessage(RichEdit1->Handle,WM_VSCROLL,SB_BOTTOM,0);  
   
  Top

7 楼daluobo(小箭)回复于 2002-08-24 15:44:42 得分 0

为什么不用listbox这个控件那,这个可以实现自动滚屏的  
  for(int   n=0;   n<2048;   n++)   {  
          AnsiString   str   =   AnsiString("Item   ")   +   n;  
          ListBox1->TopIndex   =   ListBox1->Items->Add(str);  
  }  
  不知这样实现的功能是不是一样Top

8 楼zhuJIM(笨笨)回复于 2002-08-24 15:47:07 得分 0

To:     kingcaiyao(AKing)  
  非常感谢,我的问题解决了,我想贴主的问题也应该解决了吧?  
   
   
   
   
   
  ————————————————————————————————-  
  星级老将就是厉害Top

9 楼starwalker(飞)回复于 2002-08-24 15:49:51 得分 0

不行啊!  
  楼上的,那也滚得太后了吧!  
  都滚到文字的后面了!Top

10 楼starwalker(飞)回复于 2002-08-24 16:30:09 得分 0

顶~~Top

11 楼zhuJIM(笨笨)回复于 2002-08-24 17:25:32 得分 0

关于贴主的问题,我又琢磨了很久,没有想出办法,其实在RichEdit的最后一行,又一个回车,如果能想办法将这个回车符删除,就可以了Top

12 楼kingcaiyao(aking)回复于 2002-08-24 18:10:41 得分 35

如果你不想将滚动条移到后,你可以这样:  
  WM_VSCROLL消息有以下参数可供选用:  
   
  SB_BOTTOM Scrolls   to   the   lower   right.  
  SB_ENDSCROLL Ends   scroll.  
  SB_LINEDOWN Scrolls   one   line   down.  
  SB_LINEUP Scrolls   one   line   up.  
  SB_PAGEDOWN Scrolls   one   page   down.  
  SB_PAGEUP Scrolls   one   page   up.  
  SB_THUMBPOSITION Scrolls   to   the   absolute   position.   The   current   position   is   specified   by   the   nPos   parameter.  
  SB_THUMBTRACK Drags   scroll   box   to   the   specified   position.   The   current   position   is   specified   by   the   nPos   parameter.  
  SB_TOP Scrolls   to   the   upper   left.  
   
  Pos  
   
  Value   of   the   high-order   word   of   wParam.   Specifies   the   current   position   of   the   scroll   box   if   the   nScrollCode   parameter   is   SB_THUMBPOSITION   or   SB_THUMBTRACK;   otherwise,   nPos   is   not   used.    
  Top

13 楼dejoy(燕青)回复于 2002-08-24 22:00:27 得分 35

with   MainFrm.RichEdit1   do    
          begin    
              SelStart   :=   Length(Text);    
              Perform(EM_SCROLLCARET,   0,   0);    
          end;    
  Top

14 楼starwalker(飞)回复于 2002-08-24 22:55:16 得分 0

由于其他条件限制,只能用RichEdit  
  现在的问题是:  
  ::PostMessage(RichEdit1->Handle,WM_VSCROLL,SB_BOTTOM,0);  
  滚得太后了,都滚到文字的后面了!Top

15 楼starwalker(飞)回复于 2002-08-24 23:10:07 得分 0

解决了  
  受   kingcaiyao(AKing)   和   dejoy(燕青)   的启发,用如下代码可以解决:  
  ::PostMessage(RichEdit1->Handle,EM_SCROLLCARET,SB_BOTTOM,0);  
  只是最后有个回车:<  
  好了,再看看有没有可以解决回车的贴,3天内给分。  
   
  ps:怎么不能给自己加分??Top

相关问题

  • 如何使用 RichEdit 自动滚屏
  • 自动滚屏问题?
  • 怎么样可以实现滚屏?
  • 用鼠标中键自动滚屏
  • 如何实现自动滚屏......
  • 如何实现自动滚屏??
  • 如何不要RichTextBox自动滚屏?
  • 请教,如何用一个复选框来控制一个RichEdit的自动滚屏?解决了就给分啦,在线中
  • 请教RichEdit的滚屏问题!
  • 如何在RichTextBox中实现自动滚屏的功能

关键词

  • 文字
  • 解决
  • richedit
  • sb
  • yourstring
  • 自动滚屏
  • vscroll
  • 添加
  • 回车
  • postmessage

得分解答快速导航

  • 帖主:starwalker
  • kingcaiyao
  • kingcaiyao
  • dejoy

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo