怎样在MEMO中读出光标的坐标(x,y)呢?

seewell 2001-07-11 12:16:33
想做处像TOAD那样的功能,点一个点后面就显示出有效值的提示
想读出MEMO的光标位置,查了以前的帖子,没有满意的答案
不要告诉我SELSTART,要坐标

多谢各位了!
...全文
208 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
seewell 2001-08-03
  • 打赏
  • 举报
回复
hehe,结贴了还有人回,这位兄弟,谢谢!以后一定报答!
SkyGG 2001-08-02
  • 打赏
  • 举报
回复
应该用API实现:这时就可以调用WINDOWS API中的EM_LINEFROMCHAR和EM_LINEINDEX消息来确定MEMO控件中光标的当前行和列,具体调用方法的过程如下:
procedure TForm1.Button1Click(Sender: TObject);

var

LineNum:longint;

CharsBeforeLine:longint;

begin

LineNum := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,

Memo1.SelStart,0);

CharsBeforeLine:=SendMessage(Memo1.Handle,EM_LINEINDEX,

LineNum,0);

Label1.Caption:='Line: '+IntToStr(LineNum + 1);

Label2.Caption:='Position: '+IntToStr((Memo1.SelStart -

CharsBeforeLine)+1);

end;
seewell 2001-07-11
  • 打赏
  • 举报
回复
也就是文本光标相对于屏幕象素的位置 ,谢谢大家
seewell 2001-07-11
  • 打赏
  • 举报
回复
请指点!
seewell 2001-07-11
  • 打赏
  • 举报
回复
哪位大虾处理过这种问题
指点一下菜鸟,
很急的
seewell 2001-07-11
  • 打赏
  • 举报
回复
getcursor 不好用的.
seewell 2001-07-11
  • 打赏
  • 举报
回复
joki(): Memo.CaretPos不行的,得出的也是行列的值

tjf1117(tjf1117):呵呵,的确如此

各位大虾,给分了
tjf1117 2001-07-11
  • 打赏
  • 举报
回复
傻帽,要(x,y)的位置?真笨,
好好去\program file\common file\borland\shared\help
里面好好翻翻win32.hlp吧,好好看看win32帮助,
用getcursor,等函数吧,
无聊,
tjf1117 2001-07-11
  • 打赏
  • 举报
回复
别人都回答了,也不用我说你苯了。
joki 2001-07-11
  • 打赏
  • 举报
回复
Memo.CaretPos也行
seewell 2001-07-11
  • 打赏
  • 举报
回复
prometheusphinx(白日梦) 好用,多谢!
prometheusphinx 2001-07-11
  • 打赏
  • 举报
回复
用GetCaretPos
seewell 2001-07-11
  • 打赏
  • 举报
回复
大家帮忙了!
seewell 2001-07-11
  • 打赏
  • 举报
回复
没有办法吗?

我想完成这样一个功能,再MEMO上写东西,点一个点能像DELPHI那样在那个位置弹出一个提示框
我用LISTBOX做提示框,所以想要光标的坐标.

如果能用其他方法实现或者其他控件实现类似的功能也可以,请各位大虾指点

谢谢!
myxfang 2001-07-11
  • 打赏
  • 举报
回复
好像没有这个名称吧
seewell 2001-07-11
  • 打赏
  • 举报
回复
再提前

就是文本光标相对于屏幕象素的位置
seewell 2001-07-11
  • 打赏
  • 举报
回复
谢谢各位出手!

to say: Toad 是一个查询的工具,功能很强大哦 帮忙看看怎么做阿
to illcat:这只能取出光标所在的字符的行和列,不是象素坐标.因为我要把一个控件动态的放在光标所在的位置,所以想知道象素坐标.请指点.
to myxfang:getcursorpos能取到鼠标光标的坐标,能告诉我怎么取文本光标的坐标吗,谢谢

谢谢,请大家继续阿
fengyun77 2001-07-11
  • 打赏
  • 举报
回复
同意楼上。
myxfang 2001-07-11
  • 打赏
  • 举报
回复
getcursorpos()
illcat 2001-07-11
  • 打赏
  • 举报
回复
Rows := Memo1.Perform(EM_LINEFROMCHAR, -1, 0);
Columns := Memo1.SelStart - Memo1.Perform(EM_LINEINDEX, -1, 0);
行和列都是从0开始的
加载更多回复(4)

5,388

社区成员

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

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