Работа с TEdit

Vladimir Mihailovich

Что надо написать в обработчике события, чтобы по нажатию кнопки втопилась мигающая черточка в конкретный Edit?
19 ответов

Vladimir Mihailovich

КонкретныйEdit.SetFocus


Vladimir Mihailovich

Продолжая тему афтора задам такой вопрос.Есть пресловутый TEdit. Надо что бы при передаче ему фокуса его содержимое выделялось (selectall). Свойство AutoSelect активно. Но....работает это только при передаче фокуса табом. Если щелкаешь мышёй, едит получает фокуи, а текст остается не выделенным.Возможно решить эту "проблему" и как, если возможно?


Vladimir Mihailovich

Продолжая тему афтора задам такой вопрос.Есть пресловутый TEdit. Надо что бы при передаче ему фокуса его содержимое выделялось (selectall). Свойство AutoSelect активно. Но....работает это только при передаче фокуса табом. Если щелкаешь мышёй, едит получает фокуи, а текст остается не выделенным.Возможно решить эту "проблему" и как, если возможно?
Edit1.SelectAll;
на OnMouseDown


Vladimir Mihailovich

Edit1.SelectAll;
на OnMouseDown
В этом случае нет возможности кликом мышки указать позицию курсора для редактирования.


Vladimir Mihailovich

OnEnter--http://www.podgoretsky.com


Vladimir Mihailovich

OnEnter
Не работает


Vladimir Mihailovich

WM_SETFOCUS--http://www.podgoretsky.com


Vladimir Mihailovich

Проблема думаю не в том на какое событие поставить выделение текста. Здесь можно замечательно использовать и тот же самый onEnter. Но...почему не работает метод SelectAll? Не понятно....


Vladimir Mihailovich

Проблема именно в событие, видимо позиция курсора устанавливается позже--http://www.podgoretsky.com


Vladimir Mihailovich

В этом случае нет возможности кликом мышки указать позицию курсора для редактирования.
А зачем куда-то устанавливать курсор при SelectAll ? Все равно текст будет замещен


Vladimir Mihailovich

Или надо что-то типа:
edit1.SelLength:=length(edit1.Text)-edit1.SelStart;


Vladimir Mihailovich

В итоге вот что сделал. Может это и изврат, зато работает =)
<b>procedure</b> TForm1.edtCodeEnter(Sender: TObject);
<b>begin</b>
 PostMessage(TEdit(sender).Handle, WM_LBUTTONDBLCLK, <b>2</b>,<b>2</b>);
 PostMessage(TEdit(sender).Handle, WM_LBUTTONUP, <b>2</b>,<b>2</b>);
<b>end</b>;
ЗЫ Спасибо за внимание.


Vladimir Mihailovich

MerlinWT,у меня этот изврат не работает


Vladimir Mihailovich

Кстати, одно но есть....Он будет правильно работать только если в поле введено одно слово.


Vladimir Mihailovich

Он будет правильно работать только если в поле введено одно слово.
Волшебное? У меня введено Edit1. Работает так же, как и SelectAll на MouseDown


Vladimir Mihailovich

MerlinWT,у меня этот изврат не работает
cкачать


Vladimir Mihailovich

Работает так же, как и SelectAll на MouseDown
А на выделенном тексте щелкни и увидишь разницу.
Волшебное? У меня введено Edit1.
Введи текст "Это тескт", и все поймешь ;-)


Vladimir Mihailovich

В этом случае нет возможности кликом мышки указать позицию курсора для редактирования.Но...почему не работает метод SelectAll? Не понятно....
А с чего вы решили, что он не работает?Насколько я помню логику работы стандартного TEdit, то в нём нельзя одновременно выделить область и усатновить курсор ввода текста куда-то ещё (хоть вне, хоть внутри). При попытке переместить курсор выделение снимается.


Vladimir Mihailovich

в нём нельзя одновременно выделить область и усатновить курсор ввода текста
Угу. Именно так. Я почему-то не подумал об этом сразу. Каюсь.