Страница 1 из 1

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

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

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


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

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

В общем, дожили, не могу правильно определить позицию курсора...

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

СообщениеДобавлено: 28.04.2012 12:36:51
Light13
Скорее всего смена позиции обрабатывается после события KeyDown.
Попробуйте тот же код в KeyUp.

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

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


Ё-моё! Спасибо большое! Вот я идиот