开发者

Setting carret-position in an External Application's text area?

Thanks to Rob Kennedy's answer to my question on how to set the Skype Chat window text.

However, whenever I set the text using

SendMessage(RichEditWnd,WM_SETTEXT,0,Integer(PChar(Edit1.Text)));

Then when I click on the Chat Edit control in Skype, the carret is placed at the beginning and some clicking is required to get it "right" a开发者_运维百科gain.

Is there a Windows Message for setting the carret position? Or atleast something that I can use to set the Carret Position to the end of the text? :)


Yes, there is: EM_EXSETSEL.

wParam should be 0, and lParam should be a pointer to a TCharRange structure containing the first and last characters in the selection. You want these to be equal (that is, zero characters selected).

For instance,

var
  cr: TCharRange;
begin
  cr.cpMin := 2;
  cr.cpMax := 2;
  SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, integer(@cr));

will set the caret just before the third character in the Rich Edit control.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜