How can I move the cursor to the end of the text (Delphi)?

24,690

Solution 1

If you really want to do this with messages take a look at:

  1. EM_SETSEL
  2. EM_EXSETSEL

Also there you have the complete reference for edit:

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

In code (no messages) you would do something like this:

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

With messages:

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

Solution 2

I think your code is wrong . you have to using "EM_SETSEL" parameter . my problem solved with this code :

  //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));

Thank you , anyway :)

Share:
24,690
Kermia
Author by

Kermia

Near ... Far .. Wherever you are !

Updated on July 09, 2022

Comments

  • Kermia
    Kermia almost 2 years

    This is my code to fill a TextBox using the SendMessage function:

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

    Now, how can I move the cursor to the end of the text?

  • Kermia
    Kermia over 13 years
    Thank you Runner . but the box is not for my project ! i want to do this with an external application .
  • Runner
    Runner over 13 years
    sorry forgot to change the message constant. I posted the correct links though. Thanks for pointing out, I will fix it right away.