Позиция каретки поля TEdit

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Позиция каретки поля TEdit

Сообщение reeNUT » 28.04.2012 12:20:07

Добрый день, помогите разобраться. Вроде уже не новичок, но с таким сталкиваюсь впервые.
В общем, допустим создали новую форму, разместили поле редактирования, на кейдаун прописали вот такое

Код: Выделить всё
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
  );
begin
  caption := IntToStr(Edit1.CaretPos.x)
end;


Не могу понять - как правильно определить позицию курсора в поле. SelStart дает тоже самое. К примеру, если курсор стоит вначале поля, то значение равно 1, нажимаем еще раз влево и значение принимает 0, жмем вправо - курсор моргает уже после первого символа, а значение все равно 0, далее вправо, значение увеличивается как нужно. В общем, путаница полная. Аналогичная ситуация с перемещением курсора в конец поля. Кто-нибудь может помочь и разъяснить такой нубский вопрос?

Изображение
Изображение

В общем, дожили, не могу правильно определить позицию курсора...
Аватара пользователя
reeNUT
новенький
 
Сообщения: 18
Зарегистрирован: 05.01.2012 23:27:49
Откуда: Астрахань

Re: Позиция каретки поля TEdit

Сообщение Light13 » 28.04.2012 12:36:51

Скорее всего смена позиции обрабатывается после события KeyDown.
Попробуйте тот же код в KeyUp.
Аватара пользователя
Light13
постоялец
 
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Re: Позиция каретки поля TEdit

Сообщение reeNUT » 28.04.2012 12:41:45

Light13 писал(а):Скорее всего смена позиции обрабатывается после события KeyDown.
Попробуйте тот же код в KeyUp.


Ё-моё! Спасибо большое! Вот я идиот
Аватара пользователя
reeNUT
новенький
 
Сообщения: 18
Зарегистрирован: 05.01.2012 23:27:49
Откуда: Астрахань


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

Рейтинг@Mail.ru