如何给Memo加一个标尺(类似UltraEdit)和光标座标啊?

kellytang 2003-10-15 04:53:13
就是在状态栏里面显示当前光标所在位置(在Memo的第几行,第几列),最好有个象UltraEdit里面的那个标尺
...全文
71 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kellytang 2003-10-16
  • 打赏
  • 举报
回复
楼上的行的通,我试过了
但是这短代码放在什么地方合适呀,加个Timer控件放里面吗?
有没有光标移动那个事件啊?
ccrun.com 2003-10-16
  • 打赏
  • 举报
回复
取Memo的行数和列数用这个:
Label1->Caption=SendMessage(Memo1->Handle,EM_LINEFROMCHAR,-1,0)+1;
Label2->Caption=Memo1->SelStart-SendMessage(Memo1->Handle,EM_LINEINDEX,-1,0)+1;
ccrun.com 2003-10-16
  • 打赏
  • 举报
回复
void __fastcall TForm1::RichEdit1SelectionChange(TObject *Sender)
{
int nLine =SendMessage(RichEdit1->Handle,EM_EXLINEFROMCHAR,0,RichEdit1->SelStart);
int nLineIndex=SendMessage(RichEdit1->Handle,EM_LINEINDEX,nLine,0);
StatusBar1->Panels->Items[1]->Text="行 "+IntToStr(nLine+1) +
", 列 "+IntToStr(RichEdit1->SelStart-nLineIndex+1);

}
kellytang 2003-10-16
  • 打赏
  • 举报
回复
我也知道啊,关键是什么时候怎么计算啊?
zxy_net 2003-10-16
  • 打赏
  • 举报
回复
你计算你的光标在第几行的第几个字符就可以了,不用发消息这么麻烦。
kellytang 2003-10-15
  • 打赏
  • 举报
回复
这句话放到什么地方啊?
好像计算的有点不对
zihan 2003-10-15
  • 打赏
  • 举报
回复
line =SendMessage(RichEdit1->Handle,
EM_EXLINEFROMCHAR,0,RichEdit1->SelStart);
lineindex=SendMessage(RichEdit1->Handle,
EM_LINEINDEX,line,0);
StatusBar->Panels->Items[1]->Text="行 "+IntToStr(line+1)
+", 列 "+IntToStr(RichEdit1->SelStart-lineindex+1);
Kabin 2003-10-15
  • 打赏
  • 举报
回复
gz

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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