如何将光标移动到文本末尾(Delphi)?

时间:2010-10-08 03:06:58

标签: delphi focus cursor sendmessage

这是我使用SendMessage函数填充TextBox的代码:

  C := 'Hey there';
  SendMessage(h1, WM_SETTEXT, 1, Integer(PChar(C)));

现在,我如何将光标移动到文本的末尾?

2 个答案:

答案 0 :(得分:17)

如果您真的想通过消息执行此操作,请查看:

  1. EM_SETSEL
  2. EM_EXSETSEL
  3. 此外,您还有完整的编辑参考:

    http://msdn.microsoft.com/en-us/library/ff485923%28v=VS.85%29.aspx

    在代码(没有消息)中你会做这样的事情:

    Edit1.SelLength := 0;
    Edit1.SelStart := 0;   // set caret before first character
    ...
    Edit1.SelStart := 1;   // set caret before second character
    ...
    Edit1.SelStart := Length(Edit1.Text) // set caret after the last character
    

    留言:

    SendMessage(h1, EM_SETSEL, Length(C), Length(C));
    

答案 1 :(得分:1)

我认为你的代码错了。你必须使用“EM_SETSEL”参数。用这段代码解决了我的问题:

  //Set a value for external textbox
  SendMessage(h1, WM_SETTEXT, 0, Integer(PChar(C)));
  //move the cursor to end of the textbox(editbox,field,...)
  SendMessage(h1, EM_SETSEL, length(C), length(C));

谢谢你,无论如何:)