|
|
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Ситуция проста как овсянка...есть TextBox, в него вводится число, я проверяю по LostFocus'у правильность ввода(на предмет двойников), если есть такой номер, то курсор по идее должен вернуться на этот TextBox...но у мя что-то не пашет(голова) В событии LostFocus: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ------------------------------------------------------------------------------------ Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 08:54:46 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Убери все в Valid: LOCAL lcKmat lcKmat=This.Value SELECT Nsm LOCATE FOR ALLTRIM(Nsm.Kmat)==lcKmat IF FOUND() MESSAGEBOX("Материал с данным номером № "+lcKmat+" уже существует",0+64,dfCaption) * This.SetFocus * ThisForm.text1.SetFocus return 0 ENDIF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 09:14:53 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
To: AleksMed Прописал "Return 0", все равно выдается Мессага и курсор уходит на следующий TextBox 8-( ------------------------------------------------------------------------------------ Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 09:22:47 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
VFP Help: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 09:47:13 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
То: Andrey Ts Ж)) я канечна туплю, но не до такой же степени... Код: plaintext 1. 2. 3. 4. ------------------------------------------------------------------------------------ Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 10:10:32 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Соррии AleksMed и Andrey Ts...засунул все в Valid Event все заработало, но теперь наступил на другие грабли. Если пользователь нажал добавить и стал вводить дублёра, ему выдал Мессагу, он понял что есть такой материал и хочет нажать на Command типа "Отмена", а ему не дают, приходится вводить не имеющийся код и нажимать "Отмена"...как разрулить этот конфликт? Спасибо. ------------------------------------------------------------------------------------ Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 10:22:29 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Не совсем понял, что требуется, но возможно так: MESSAGEBOX("Материал с данным номером № "+lcKmat+" уже существует. Ввод будет отменен",64,dfCaption) ThisForm.cmdCancel.Click ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 11:11:22 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Вопрос скорее по организации...выдавать сообщение о неправильном вводе, когда пользователь уходит с TextBox'а или когда нажимает на кнопку в Click'е которой Insert? Спасибо. ------------------------------------------------------------------------------------ Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 11:27:24 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
2Grumax_user Это вопрос организации я так не делаю У меня для редактирования одельная форма диалога и все проверки происходят разом в момент попытки внесения записи в базу целиком (нажатие на кнопку) И это для меня удобнее потому что иногда кое-что и заблокировать надо, но блокировочку долго-то держать низя и т.д. и т.п. В общем мне так удобнее Короче оставьте в покое валид... просто совет и ничего более Хотя конечно есть искусство, а есть монотонная работа, и если вы романтик или художник в душе, то почему бы и нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 11:27:30 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
2Grumax_user : Лучше - бить по рукам, пока он еще ничего не сделал (как в анекдоте про первого космотуриста: - Полет прошел хорошо? - Хорошо, только руки опухли. - Почему?? - А только протянешь куда-нибудь руку, командир корабля - дынц по ней...) Идеально - ставить проверку во время ввода. На первом же "ненужном" символе - сигнал, можно какое-нибудь предупреждение, и тут же, пока пользователь не пришел в себя - последний символ "съедается" и - курсор снова моргает в ожидании правильного символа :) Такая система при построении требует чуть больше заморочек - зато потом самому же легче - не надо отлавливать все ситуации. чего там сумеют понавводить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 12:43:03 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Grumax_userему выдал Мессагу, он понял что есть такой материал и хочет нажать на Command типа "Отмена", а ему не дают, приходится вводить не имеющийся код и нажимать "Отмена"...как разрулить этот конфликт? Я поступаю просто - у кнопочки "Отмена" выставлено свойство ThisForm.MyCommand.Cancel=.t. Тогда в Valid-е TextBox-а достаточно написать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 21:00:29 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Hi Crispy! 1) ВСЁ не проверишь. Тем более дубли в многопользовательской среде. Эта проверка вообще реально может быть выполнена только в момент записи данных в таблицу - не раньше. Или ты сторонник FLOCK() и "Пускай весь мир подождёт"(c) 2) Когда юзера постоянно шпуняют - он звереет - найдёт дырку в твоей защите и напихает тебе в таблицу всякой дряни - добрее надо быть к нему, мягче :) Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 22:51:40 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Hi, Igor Korolyov ! >ВСЁ не проверишь Это и козе понятно (хотя ежу - не всегда :). Но - мне кажется - чем больше проверяешь ввод, тем меньше потом проблем на выводе :). >проверка вообще реально может быть выполнена только в момент записи данных в таблицу - не раньше Отчего же. Проверка КОРРЕКТНОСТИ данных в МОМЕНТ занесения данных - что мешает создать свои правила для нее, не давая занести неверные данные ЕЩЕ в память, ДО записи в таблицу, несмотря даже на многопользовательскую среду? >Когда юзера постоянно шпуняют... Да нет же! То, о чем я хотел сказать - это наоборот - проявление самой доброты :) и предупредительной вежливости по отношению к нему :)). Действительно - за ним даже убирают неправильно введенный символ! (ну а за лишний "пик-пик" перед этим и сообщение типа: "Вы видимо нечаянно описались!" ( ) он, скорее всего будет винить лишь свои ручки, хотя уж себя-то тут же простит - ну с кем не бывает - так что обид, а тем более злобы это не вызовет - разве что в клинических случаях... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 09:31:12 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Grumax_userВопрос скорее по организации...выдавать сообщение о неправильном вводе, когда пользователь уходит с TextBox'а или когда нажимает на кнопку в Click'е которой Insert? Спасибо. Я в Valid пишу пимерно так: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 09:40:19 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Andrey Ts Я в Valid пишу пимерно так: IF Text1.Value=bad_value AND !EMPTY(Text1.Value) MESSAGEBOX(...) RETURN .F. ENDIF важно AND !EMPTY(Text1.Value) Это - да. Можно еще "обнулять" (="") Text1.Value после MESSAGEBOX-а, для простоты выхода, если в этот момент захочется выйти, а если - нет, тогда для пользователя обнуление будет неудобно, особенно, если ввод длинный - заново набирать. Поэтому, по-моему, и лучше - стирать последний неверно введенный символ, предоставляя ввести другой, верный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 10:22:39 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
CrispyДа нет же! То, о чем я хотел сказать - это наоборот - проявление самой доброты :) и предупредительной вежливости по отношению к нему :)). Действительно - за ним даже убирают неправильно введенный символ! (ну а за лишний "пик-пик" перед этим и сообщение типа: "Вы видимо нечаянно описались!" ( ) он, скорее всего будет винить лишь свои ручки, хотя уж себя-то тут же простит - ну с кем не бывает - так что обид, а тем более злобы это не вызовет - разве что в клинических случаях... :) Какая там вежливость! Я прямо это так и вижу: ввожу, я, значит, текст в Word и почти на каждой букве мне "пик-пик": Вы, видимо, нечаяно описались! Честное слово, я сразу перейду на Notepud. Ведь практически каждое слово можно рассматривать как ошибочное написание другого слова: "Аптека" - это ошибка в написании слова "Оптика". Т.е. пока не введешь все слово целиком невозможно сказать есть ошибка или нет. Я даже не могу сказать, что для программиста это проще. Ведь надо в каждом конкретном случае писать собственный алгоритм разбора какая буква правильная, а какая - нет. Вы, почему-то, исходите из предположения, что, в основном, пользователи набирают текст правильно, а ошибка в наборе текста - это исключительно редкая операция. Лично у меня, все с точностью наоборот. Правильный набор с первого раза - это исключительно редкая ситуация. Обычно есть куча опечаток. Я их потом исправляю, после набора. Так что, лично у меня такая "забота" ничего кроме раздражения не вызовет. Вобщем, боюсь, пользователи побьют за такую "заботу". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 11:09:25 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Hi, 2ВладимирМ ! Word - не есть продукт фокс-программиста :). (хотя можно теоретически - попытаться написать Word-Notepad и на фоксе, вот только зачем?) Речь в этом топике - если только я правильно все понял - не о глобальных проблемах текстового редактора, а всего лишь - о ВВОДЕ каких-то коротких слов (фамилий, названий организаций - обычно в пределах 25-40 символов) в текстовое поле, т.е. явно - не о занесении туда сочинения на тему "Как я провел выходные..." :) Тем более, если еще раз ПРОЧИТАТЬ автора: проблема - в действиях в связи с ОБНАРУЖЕНИЕМ ДВОЙНИКОВ , т.е. образец "правильного написания" - в наличии!!! Именно об этом шла речь в моих предложениях. А если бы я вдруг написал Word на фоксе - я бы сделал точно так же, как и его создатели (разве плохо?) - неправильные слова просто подчеркиваются, с возможностью при желании это отключать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 12:25:11 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Так мы говорим об обнаружении двойников? Что ж Вы сразу-то не сказали Каким боком анализ ввода каждого символа может предотвратить ввод двойников? (Ваше сообщение (не автора топика) я поняли именно так - контроль ввода каждого символа) При всем желании невозможно сказать введен двойник или нет до тех пор пока не будут введены ВСЕ символы. Это значит, что делать анализ при вводе каждого символа - просто бессмысленное занятие. Хорошо, делаем анализ при выходе из TextBox (при попытке выхода). -) Проверяем факт наличия двойника в исходной таблице -) Если двойника нет редактируем остальные поля ввода -) По окночании ввода всех полей пытаемся записать данные И вот тут облом. Пока один пользователь редактировал другие поля воода другой пользователь создал новую запись с тем же значением. Следовательно, делать проверку в момент выхода из TextBox просто не имеет смысла. Она не гарантирует того, что дубль не будет сделан другим пользователем. Т.е. проверять на факт возможного дубля надо именно в процессе сохранения, а не в процессе ввода. С другой стороны. Если делается проверка на этапе ввода и факт дубля обнаружен, то какие дальнейшие действия? -) Запретить выход из поля? Ну, так Вы никогда форму не сможете закрыть, если передумали делать ввод. Т.е. даже для того, чтобы отказаться от модификации надо ввести уникальное значение? -) Автоматически заменить некорректное значение корректным? А какое значение будет корректным? Может пользователь в одной букве ошибся, а Вы его заставляете целиком заново вводить все значение. -) Дать уведомительное сообщение об ошибке не запрещая выход из поля? Думаете он вспомнит, что где-то там ему что-то сообщили, когда надо вводить еще кучу всяких значений в разных других TextBox-ах на той же форме? Еще недоволен будет, что его какими-то сообщениями отрывают от ввода данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 13:04:37 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
2ВладимирМ Какая там вежливость! Я прямо это так и вижу: ввожу, я, значит, текст в Word и почти на каждой букве мне "пик-пик": согласен навсе сто Просто был у меня такой случай с контролем вводимого в текстбокс ну типа если буква английская я юзеру мессягу смените мол раскладку и подтераю ввод хорошо было пока сам на попробывал короче теперь в подобных полях что-бы юзер не бил всё одно по-русски будет ну или ничего совсем не будет без всяких там сообщений Я всё это к чему ? К тому что лень она есть побудитель ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 14:15:01 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Никто и не спорит по поводу ЗАНЕСЕНИЯ отредактироавнной записи - просто это уже другие проблемы. И потом, вот же оно(!): Может пользователь в одной букве ошибся, а Вы его заставляете целиком заново вводить все значение. Так ведь как раз - и не заставляем(!), а предлагаем вписать верную букву, а неверную убираем, чтобы ускорить ему ввод А если таких "близких" двойников нет - ничего "пикать" и выскакивать и не будет - такой "локальный" контроль без проблем будет пройден - он вовсе не заменяет собой глобального контроля на этапе занесения записи в БД (но это уже выходит за пределы данного топика??) Есть такая неприятная вещь - когда тебя не понимают... Хотя, еще хуже, когда тебя и вовсе никто не слышит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 14:15:38 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
leafкороче теперь в подобных полях что-бы юзер не бил всё одно по-русски будет ну или ничего совсем не будет без всяких там сообщений Абсолютно согласен! - Ну зачем трамваю руль? - вместо поля ввода всегда предпочитаю список выбора, если это возможно. А если нет - лучше уж десятикратный контроль еще на этапе ввода... А вообще, пользователь на удивление ко всему привыкает - иной раз видишь - в такую программу часами вводит данные, что у тебя, кажется, и терпения на такое не хватило бы, а он (обычно она) вводит - и хоть бы что. Еще и разговор с кам-нибудь ведет в это время... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 14:25:54 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
Спасибо всем... Messagebox'ы юзвери не читают, обычно идет такая реакция: "Ой у нас тут какая-то какашка вылезла!" Приходишь к ним...чего случилось, показывают -> на экране Мессага с сообщением типа "запись занята другим пользователем", спрашиваешь: "Читали?" "Нет.." - отвечают.... *мат* Вобщем, я их решил задолбать Мессагами :-)). А решение вижу в проверке правильности введенного значения при выходе с TextBox'а, путем выдачи "Какашки" и по Click'у кнопки ввода, а если опять не правильно то делать Focus на неправильный TextBox. ------------------------------------------------------------------------------------ Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 14:56:31 |
|
||
|
(TextBox) метод SetFocus
|
|||
|---|---|---|---|
|
#18+
CrispyЕсть такая неприятная вещь - когда тебя не понимают... Хотя, еще хуже, когда тебя и вовсе никто не слышит... "Слышу, сынку, слышу" Просто Вы непоследовательны в своих возражениях. Когда я сравнил такой ввод с вводом в Word Вы почему-то возмутились, что речь идет о дублях. Когда я возразил, что и для дублей это не метод, Вы обиделись, что Вас никто не слышит. Значит, цель контроля ввода каждой буквы - это исключение дублей? Ну, это Вы круто загнули. Как по фрагменту слова можно однозначно сказать, что это уже было или не было? Вы представляете что будет, если поле символов в 30 и отличия только в последних 5...10 символах? Да у Вас не программа будет а музыкальный центр! Кроме того, не знаю, как именно Вы вводите текст, но когда я ввожу данные, то обычно смотрю не на экран, а на клавиатуру (или в бумажку, с которой набиваю данные). Не учили меня "слепой" печати. Т.е. постепенно, конечно, перехожу к этому методу, но постепенно... Представляете ЧТО будет введено в Вашей программе при таком контроле? Правильно, скорее всего вообще ничего! Или полный "мусор" с пропущенными буквами. Т.е. пользователь колотил-колотил по клаве, а программа ничего не ввела?! Почему собственно? Правильно, программа плохая! С точки зрения конечной цели - контроль дублирующих значений анализ каждого вводимого символа в общем случае никуда не годиться! Это еще имело бы смысл, если бы среди всего множества значений не могло бы быть значений с одинаковыми начальными символами (т.е. если ввели "Иванов", то никаких "Иванова" быть не может!), да и то, сильно сомнительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 16:02:45 |
|
||
|
|

start [/forum/search_topic.php?author=dell&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
186ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 460ms |
| total: | 791ms |

| 0 / 0 |
