怎样用编程实现TRichEdit动态滚屏

Y___Y 2006-08-15 10:12:56
我的TRichEdit Scrollbars属性设为ssVertical
我想在编程时动态滚屏,比如让它的滚动条滚到中间50 %处
我用了SendMessage(RichEdit->Handle, EM_SCROLL, SB_LINEDOWN, 0);
但每次只滚动一小步,要实现那个效果怎么办?
望高手指点一二
...全文
191 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Y___Y 2006-08-16
  • 打赏
  • 举报
回复
此言差矣,Memo1->Lines->count是统计行数的,Memo1->SelStart设置的是从文本开头到这个位置的字符数,不是行数,不信你可以亲自测试一下的
jaffy 2006-08-16
  • 打赏
  • 举报
回复
int Pos=Memo1->Lines->count*71/100
这个POS才是准确的,然后MOVE到那个位置
Y___Y 2006-08-16
  • 打赏
  • 举报
回复
有点偏差,测试了一下但基本满足要求
jaffy 2006-08-16
  • 打赏
  • 举报
回复
感觉不对,你这个只是总长度和你要求的滚动条的比例不一致
Y___Y 2006-08-16
  • 打赏
  • 举报
回复
终于自己摸索出来了,代码如下;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int TextLength=Memo1->Lines->Text.Length();//文本长度
int Pos=71;//需要到达的位置
Memo1->SelStart=TextLength*Pos/100;// 选择文本开始位置
Memo1->SelLength=0;//选择文本长度
}
不知道大家有没有其它方法实现
还是要感谢DeepBlueOcean
Y___Y 2006-08-16
  • 打赏
  • 举报
回复
要滚动条具体滚到总行的XX%(如%71),怎么实现?
BlueDeepOcean 2006-08-16
  • 打赏
  • 举报
回复
利用“翻页”而不是“滚行”的消息。
BlueDeepOcean 2006-08-16
  • 打赏
  • 举报
回复
SendMessage(RichEdit1->Handle, EM_SCROLL, SB_PAGEDOWN , 0);

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧