求教Rich TextBox控件问题:当光标定位到富文本的某一行时,如何得知该行所在的像素坐标值?(200分)

  • 主题发起人 主题发起人 devfan
  • 开始时间 开始时间
D

devfan

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把一个图片框定位到该行上,请问如何办?
 
RichTextBox控件哪儿有?
 
用 api 函数 GetCursorPos ,你可以在 delphi 的帮助文件 win32 sdk 中查到,

 
用CaretPos.X
CaretPos.Y
试一下。
 
to 940801: 谢谢您的回答,但您可能误会了,我说的是文本框中闪动的光标,
而不是鼠标的光标。
或者这样说,富文本构件中有8行文字,(每行的字体大小是不相同的),
我要把一个图片框定位到富文本框的第5行,怎么办?
或者说富文本构件中共有5行文字,我想将一个图片框刚好放到第六行,如何定位?


ccweifen,不好意思,我说的RichTextBox控件是M$的控件,
即相当于Delphi中的Rich Edit构件。
 
var
pt: TPoint;
begin
//将光标移动到你希望的位置
GetCaretPos(pt);
Image.Left := Pt.x;
Image.Top := Pt.y;
end;
 
这个问题很有意思,也很有难度
GetCaretPos 在 windows api, TCustomMemo, TCustomRichEdit 中都有定义,
象 Another_eYes 那样写调用的是 windows API 函数 GetCaretPos,
只要光标确实是停在 rich box 上应该可行(使用前先判断焦点),
但这样只能得到当前的光标位置。不能得到下一行的起点光标位置。
定义在 TCustomMemo 和 TCustomRichEdit 中的 GetCaretPos 是保护的,
要在 TMemo 和 TRichEdit 中使用必须 override 它。不过这个方法得到的是字符位置,
即左面,上面的字符个数。不是像素位置,
我试一下再给你答复吧。




 
多人接受答案了。
 
后退
顶部