:: Visual Foxpro, Foxpro for DOS
Как заставить курсор устанавливаться в начало/конец поля ввода...
ZenTigra

Сообщений: 514
Дата регистрации: 03.12.2004
При начале редактирования вне зависимости от того в какую часть текста кликнули мышкой, необходимо устанавливаться курсор в начало или конец текста в поле ввода (в зависимости от условия)

PS.Приведу пример для чего это нужно.
Мышкой кликают в поле дата, но не попадают в начало поля, и начинают вводить дату, не смотря на экран, естественно возникает ошибка...



Исправлено 1 раз(а). Последнее : ZenTigra, 16.02.17 18:34
Ratings: 0 negative/0 positive
Re: Как заставить курсор устанавливаться в начало/конец поля ввода...
Pliskin

Сообщений: 2959
Откуда: Новосибирск
Дата регистрации: 19.11.2003
TextBox.SelStart = 0 - Начало текста
TextBox.SelStart = Len( TextBox.Text ) - конец текста
Ratings: 0 negative/0 positive
Re: Как заставить курсор устанавливаться в начало/конец поля ввода...
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
В фоксе такой чудесный текстбокс, что поставить курсор ввода "в последнюю позицию" невозможно в принципе - он может стоять только ПЕРЕД последним символом (если тем или иным образом задано ограничение по длинне вводимого выражения. если ограничения нет, то несколько теряется смысл "последней позиции").
Кроме того большое значение имеет в каком именно обработчике события писать этот SelStart = 0. GotFocus не подойдёт для входа в поле мышкой, а какой-нить Click "сам по себе" превращает редактирование в кошмар - т.к. ВСЕ тычки мышой будут двигать курсор в начало, попутно сбрасывая выделение. Человек захотевший исправить пару символов в середине строки из 50-100 буковок проклянёт программиста сделавшего такое "улучшение" - и я его в этом всемерно поддержу А вот отличать "первый" клик мышой в поле от последующих - это уже весьма непросто будет (из-за особенностей порядка срабатывания событий для этого контрола)...

P.S. Вообще-то "тыкают МЫШКОЙ в поле" и "не смотря на экран" - это взаимоисключающие параграфы. Юзера, мягко говоря, привирают. Вот что "не могут попасть точно в нужное место" - это да, в это ещё можно поверить

А для чистого ввода с клавиатуры (вход по Tab/Enter/клавиши со стрелками) вполне хватает свойств типа SelectOnEntry и Format="K".


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 17.02.17 00:06
Ratings: 0 negative/0 positive
Re: Как заставить курсор устанавливаться в начало/конец поля ввода...
ZenTigra

Сообщений: 514
Дата регистрации: 03.12.2004
Pliskin
TextBox.SelStart = 0 - Начало текста
TextBox.SelStart = Len( TextBox.Text ) - конец текста
Спасибо за совет, он мне "неожиданно" пригодился, но в другом месте, а с проблемою в положении курсора в поле для ввода Даты я вышел по другому,
я отцентровал дату по правому краю, и теперь появилось больше места для попадания в начало ввода курсором мышки.
Ratings: 0 negative/0 positive
Re: Как заставить курсор устанавливаться в начало/конец поля ввода...
krin

Сообщений: 172
Дата регистрации: 08.02.2005
ZenTigra
я отцентровал дату по правому краю, и теперь появилось больше места для попадания в начало ввода курсором мышки.
в textbox.Click
IF EMPTY(this.Value)
this.SelStart = 0
ENDIF
Ratings: 0 negative/0 positive
Re: Как заставить курсор устанавливаться в начало/конец поля ввода...
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
Если задача в том, чтобы по щелчку мыши дата выделялась так же, как при переходе в поле по TAB (при установленном свойстве SelectOnEntry), можно в событие when текстбокса добавить строку
KEYBOARD '{CTRL+A}'

Это бывает удобно для полей, в которых пользователь как правило либо ничего не меняет, либо меняет все или большую часть.
В остальных полях я добавляю в событие Click
with this
if empty( nvl( .Value, '' ) )
.SelStart = 0
endif
endwith

т.к. в пустом поле плохо видно, встал ли курсор точно в начало строки или же перед ним еще пробелы есть.
Ratings: 0 negative/0 positive
Re: Как заставить курсор устанавливаться в начало/конец поля ввода...
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Для "пустого" поля - да, весьма удобно, но для заполненного проблема так просто не решается... Именно чтобы и становилось хорошо при первом входе, и не мешало потом мышкой же перемещаться по тексту... Благо не так уж часто это нужно - обычно хватает просто "выделения всего", т.е. предполагая что пользователь будет целиком заменять введенный текст.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как заставить курсор устанавливаться в начало/конец поля ввода...
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
Igor Korolyov
для заполненного проблема так просто не решается... Именно чтобы и становилось хорошо при первом входе, и не мешало потом мышкой же перемещаться по тексту

Это уже извращение, я считаю. Потому, что установка курсора при первом клике на непустом поле в первую позицию - вещь не интуитивно понятная и не всегда нужная. Часто ведь при изменении введенного значения нужно только подправить в серединке что-то, а не перебивать все значение.
Ratings: 0 negative/0 positive
Re: Как заставить курсор устанавливаться в начало/конец поля ввода...
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Про то ж и речь


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 12 (Гостей: 12)

© 2000-2024 Fox Club 
Яндекс.Метрика