Как переместить курсор в конец текста (Delphi)?

Это мой код для заполнения TextBox с помощью функции SendMessage:

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

Теперь, как я могу переместить курсор в конец текста?


person Kermia    schedule 08.10.2010    source источник
comment
Ой! Не очень по-Дельфийски. Я предполагаю, что TextBox не является компонентом Delphi?   -  person Francesca    schedule 08.10.2010
comment
Функция SendMessage — это API, и нет никаких правил использования Windows API только для нашего проекта. например, мы используем эту функцию для заполнения мессенджера Yahoo Textbox, Editbox, Box, Field. полностью: TextBox - это виртуальный ящик на компьютере, который мы печатаем на нем с помощью клавиатуры!   -  person Kermia    schedule 08.10.2010


Ответы (2)


Если вы действительно хотите сделать это с сообщениями, взгляните на:

  1. EM_SETSEL
  2. EM_EXSETSEL

Также у вас есть полная ссылка для редактирования:

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));
person Runner    schedule 08.10.2010
comment
Спасибо Бегун. но коробка не для моего проекта! Я хочу сделать это с помощью внешнего приложения. - person Kermia; 08.10.2010

Я думаю, что ваш код неверен. вы должны использовать параметр "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));

В любом случае, спасибо :)

person Kermia    schedule 08.10.2010
comment
извините, забыл изменить константу сообщения. Хотя я дал правильные ссылки. Спасибо, что заметили, сейчас исправлю. - person Runner; 08.10.2010