|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
С целью организовать ограничение ввода в поле по количеству символов на форуме нашёл решение с примером (из Гетца), которое на первый взгляд полностью подходит для решения вопроса, но столкнулся с неприятным побочным эффектом. Когда вводить в поле текст то по достижении указанного лимита ввод будет заблокирован, при удалении символов опять доступен до лимита, тут всё отлично. Но вот когда по достижении лимита выйти из поля а потом опять зайти до можно набрать ещё один символ а если ещё раз выйти зайти то кроме того что можно набрать символ но и удалить лишнее уже невозможно. Можно ли как то допилить пример чтобы после достижения лимита при выходе и повторном входе в поле не давало выходить за лимит? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2018, 23:46 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
Какое-то кривое решение. Оно не защитит и от вставки текста любой длины из буфера обмена. Проще и надежнее так: Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 06:39 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
MrShin, У Вашего решения есть один существенный недостаток. Если вводить символы в средине уже введённой строки то по достижению лимита курсор переходит в конец, а надо чтобы он остановился в месте ввода последнего символа. В "кривом решении" курсор остаётся в том месте где он был в момент достижения лимита. Таким образом можно удобно удалять и добавлять символы в любой части строки не выходя за лимит. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 12:27 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
Не проблема Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 13:17 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
MrShin, Опять проблема. При достижении лимита добавление символов ввод символов не блокируется если стать в средину строки (за счёт удаления последних). Надо чтобы при достижении лимита набрать лишние символы было невозможно а если надо что-то добавить то перед этим только убрав символы в любом месте строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 14:18 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
А почему не хотите просто маской ввода воспользоваться? Она все это делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 14:33 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
MrShinА почему не хотите просто маской ввода воспользоваться? Она все это делает. Маска не очень удобна в конкретном случае: 1. Количество символов может быть ниже лимита, а маска подразумевает ещё ввод (пользователи нервничают видя подчёркивание маски путая его с символами) 2. Проблемно вставить символы внутри строки (удаляются другие символы) 3. Желательно иметь индикатор оставшихся символов Этому техзаданию отлично подходит "кривое решение" за исключением момента описанного в первом сообщении. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 14:43 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
Тогда я бы перенес обработку в событие Keypressed. Возвращается просто 0 вместо кода клавиши при достижении лимита. Если не получится самому сделать, отвечу как только доберусь до компа. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 15:03 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
GVOV, Я бы, вообще, не заморачивался с отслеживанием текста. Дожидался бы действий по сохранению введенного текста и уж после этого занимался бы проверкой длины и правильности ввода. Ну, разве что, показать длину уже введенного текста... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 15:16 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
Rivkin Dmitry, Этот вариант сейчас работает. Но хотелось бы чтобы пользователь думал об ограничении поля во время его заполнения и когда вышел за лимит сразу тут же подумал об оптимизации и удалил или сократил некоторые слова. Для этого и хочется чтобы поле имело ограничение на ввод и просто не давало ввести больше, а так как больше текст не набирается пользователь сразу начнёт думать об оптимизации, убирая лишнее в строке тем самым образую запас лимита в который внесёт всю нужную информацию. Индикация текста играет вспомогательную роль. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 16:08 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
GVOV, Для предотвращения ввода внутри строки нужно добавить такой обработчик: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
При этом оставить то, что уже есть на Change. В этом случае до вызова adhLimitChars будет доходить только при вставке данных из буфера обмена, включая вставку с помощью мыши. Если это не требуется, можно убрать эту функцию вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 16:10 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
MrShinТогда я бы перенес обработку в событие Keypressed. Возвращается просто 0 вместо кода клавиши при достижении лимита. Если не получится самому сделать, отвечу как только доберусь до компа. В таком подходе предвижу проблемы при обработке удаления символов, выделения текста и набора вместо него нового. Исходный пример эти проблемы как бы решает кроме того что не обрабатывает первый символ при повторном входе. Никто не может натолкнуть на мысль, отталкиваясь от исходного примера? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 16:13 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
GVOVЭтот вариант сейчас работает. Но хотелось бы чтобы пользователь думал об ограничении поля во время его заполнения и когда вышел за лимит сразу тут же подумал об оптимизации и удалил или сократил некоторые слова Да просто при превышении длины делай цвет текста (или надписи поля) красным, уверяю - будут думать и сокращать... только нужно наверно отслеживать длину Me.Pole1. Text ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 16:23 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
И наверно в Chenge ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 16:25 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
vmag, Вариант неплохой. Даже в чём то более универсальный чем мой изначальный так как можно выйти за лимит набрав всю нужную информацию (и получить красный свет) а потом ужимать до того состояния пока влезет (и цвет станет нормальным). А при сохранении не давать сохранить пока не будет приведено в соответствие. Осталось только придумать какой-то универсальный ненавязчивый информативный индикатор. Спасибо за наводку! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 17:23 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
MrShin, С KeyPress как будто получилось убрать побочный эффект. Всем большое спасибо за помощь!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 17:24 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
GVOVВ таком подходе предвижу проблемы при обработке удаления символов, выделения текста и набора вместо него нового. Да вроде нет никаких проблем GVOVНикто не может натолкнуть на мысль, отталкиваясь от исходного примера? Вот, честно говоря, не знаю как допилить исходный пример для устранения проблемы с повторным входом и, особенно, со вставкой из буфера обмена, потому и предложил другой подход. Да и вообще, API функциями лучше пользоваться в крайних случаях, когда без них ну никак не обойтись, а тут все решается штатными средствами. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 08:13 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
А можно глянуть на последнюю получившуюся версию? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 09:06 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
Joss, Ну глянь (то, что я предлагал)... Первый вариант как-то мудреней и требует костылей... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 10:52 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
vmagJoss, Ну глянь (то, что я предлагал)... Первый вариант как-то мудреней и требует костылей... Да Ваш вариант намного попроще и перспективней для дальнейшего усовершенстования, но я пока что остался на первом варианте устранив побочный эффект ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 12:15 |
|
Ограничение ввода (побочный эффект)
|
|||
---|---|---|---|
#18+
Спасибо, посмотрел. Вариант vmag легче встроить в программу. Вариант GVOV более наворочен. Чем может грозить использование API? Тем что программа может не пойти на 64-х разрядном Access. И описание API у Вас должно будет выглядеть вот так. Так он заработает на любой версии Access Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 10:59 |
|
|
start [/forum/topic.php?fid=45&fpage=57&tid=1611710]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 279ms |
total: | 428ms |
0 / 0 |