关于文本框和程序启动时怎么样得到的CAPS LOCK情况?

skydqboy 2003-04-11 09:47:02
我想在任务栏上显示当前文本框(富文本框)中光标所在的行和列,那行和列怎么样得到啊?
还有一个是在此程序启动时怎么样判断CAPS LOCK是否已经按下,这样在程序启动时能识别出来??
...全文
65 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
skydqboy 2003-04-11
  • 打赏
  • 举报
回复
void __fastcall TForm1::RichEdit1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
AnsiString column = SendMessage(RichEdit1->Handle,EM_LINEFROMCHAR,-1,0)+1; AnsiString row = SendMessage(RichEdit1->Handle,EM_LINEINDEX,-1,0)+1;
StatusBar1->SimpleText="行: "+column+" 列: "+row;
}

这好像也不行啊.
xc2927 2003-04-11
  • 打赏
  • 举报
回复
应该有获得Cap Lock的API,查查,告诉你
xuv2002 2003-04-11
  • 打赏
  • 举报
回复
在RichEdit1的OnMouseDown 和 OnKeyDown 事件里面分别
写上以上代码试试
skydqboy 2003-04-11
  • 打赏
  • 举报
回复
AnsiString column = SendMessage(RichEdit1->Handle,EM_LINEFROMCHAR,-1,0)+1; AnsiString row = SendMessage(RichEdit1->Handle,EM_LINEINDEX,-1,0)+1;
StatusBar1->SimpleText="行: "+column+" 列: "+row;

这个好像不对啊,不能跟这着变化啊,还有那个列只往上增加不会减少的,还有什么方法在任务栏上显示?
xuv2002 2003-04-11
  • 打赏
  • 举报
回复
第一个问题简单
AnsiString column = SendMessage(RichEdit1->Handle,EM_LINEFROMCHAR,-1,0)+1; //+1表示第一行为1 ,以下相同
AnsiString row = SendMessage(RichEdit1->Handle,EM_LINEINDEX,-1,0)+1;
第二个不知道
BCB 2003-04-11
  • 打赏
  • 举报
回复
第二个问题API能解决,让别人先答吧
skydqboy 2003-04-11
  • 打赏
  • 举报
回复
行啊好像能用了只要写一个OnMouseDown OnKeydown 就可以了.(对字母)
但老大啊,我写一个汉字,就要占加2啊,而来应该加1的啊,这怎么办??
xuv2002 2003-04-11
  • 打赏
  • 举报
回复
或是这样
在RichEdit1 的OnMouseUp,OnMouseDown OnKeydown OnKeyup
都写
AnsiString column =RichEdit1->CaretPos.y+1;
AnsiString row = RichEdit1->CaretPos.x+1;
StatusBar1->SimpleText="行: "+column+" 列: "+row;

604

社区成员

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

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