powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Фокус не остается на объекте
34 сообщений из 34, показаны все 2 страниц
Фокус не остается на объекте
    #33558491
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леди и джентльмены!
В форме есть текстбокс txtNomer. Пользователь заполняет его и пытается уйти с него на другой объект (табулятором, энтером - все равно). В LostFocus Event прописано:
Код: plaintext
1.
2.
3.
4.
IF EMPTY(this.value)= .f. AND  LEN(RTRIM(this.value))< 12  
=MESSAGEBOX("Правильно введите номер!", 48 )
this.txtNomer.SetFocus
RETURN 
ENDIF
Все срабатывает как надо, но фокус на txtNomer не остается, а переходит на следующий объект.
Что прописала в коде не так?
Благодарю
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558508
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛисонькаЛеди и джентльмены!
Благодарюиспользуй событие ::Valid()
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558511
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну вообче та лучше в валиде прописать нешто
IF LEN(alltRIM(this.value))<12
=MESSAGEBOX("Правильно введите номер!",48)
RETURN .f.
ENDIF
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558518
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛисонькаЧто прописала в коде не так?а если в твой код дописать NODEFAULT - че тогда будет ? может, повезет
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558527
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100ну вообче та лучше в валиде прописать нешто
IF LEN(alltRIM(this.value))<12
=MESSAGEBOX("Правильно введите номер!",48)
RETURN .f.
ENDIFа че толку
серано это ::LostFocus()
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558535
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
быть этого не могет

если валид вернул фолс
то он снего никуда не дернется
не вжизнь
хоть пристрели его
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558545
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100хоть пристрели егоона же тусским по белому сказала :
В LostFocus Event прописано:
бла бла бла...
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558550
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня встречный вопрос. А если пользователю надоест бится лбом об стену? Ну не знает он какой номер должен быть "правильным"! Как он сможет прекратить это безобразие и закрыть форму?

Ведь, чтобы закрыть форму, надо выйти из поля, а чтобы выйти из поля, надо знать "правильный" номер. Замкнутый круг.

Может быть, логичнее выдавать это сообщение при попытке сохранить внесенные изменения? А до того, просто подсвечивать некорректное значение, например, красным цветом фона, но не запрещать переход на другой объект.
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558551
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну это проблемы индейцев

девушка не туда написала
вот и грабли у нее

проверку валидности нужно делать в валиде ....

вот и все

правила такие
есть
ходить нужно ровненько, ездить по правой стороне
не кушать на-ночь
и все - будет счастье
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558561
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100проверку валидности нужно делать в валиде ....нет, товаришчь чингачгук, ты неправ. проверку надо делать по окею
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558571
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
иногда и коей проверяю по ...
а иногда и по-окею не окейно

такая она сложная и непонятная штука- жизня называется

во как
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558584
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох, понаписали всего до всего!! Буду отвечать попорядку.
ALLTRIM можно, но не очень-то нужно - InputMask пробелы в начале не допустит.
Перенсла код в Valid
Не прошло, ошибка: Cannot call SetFocus from within a When, Valid и т.д.
В справке написано, что SetFocus конфликтует с данными events.
Как раз пользователи и просили ввести этот код, проверка стояла до этого именно в кнопке ОК. Им подавай сообщение об ошибке сразу. А выйти из пустого поля - я же прописала EMPTY()=.f. Раз верного номера нет - это проблема того, кто давал неверные сведения, пусть исправляется, оператор вносить такие данные не будет.
И, раз девушка наступила-таки на грабли, то вы-то на что, джентльмены?
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558599
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558605
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
маску свою напишите
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558610
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
маску какую Вы пишите
сюда напишите

я так понимаю счет
для банк счета это будет так
999 99 999 9 9999 9999999
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558615
фдуч11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
12 цифер

это что счета 1-го 2-го и 3-го порядка просят вводить???
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558624
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛисонькаПеренсла код в Valid
Не прошло, ошибка: Cannot call SetFocus from within a When, Valid и т.д.
В справке написано, что SetFocus конфликтует с данными events.

Правильно написано. Только ведь не надо фокус никуда переводить. Если введено неправильно, то надо просто запретить ВЫХОД. Т.е. потерю фокуса.

Для этой цели, внутри события Valid() и используется команда

RETURN .F.

или

RETURN 0

В последнем случае не будет выскакивать системное сообщение об ошибке.
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558710
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
господа а не проще ли все это

Код: plaintext
1.
2.
3.
4.
IF EMPTY(this.value)= .f. AND  LEN(RTRIM(this.value))< 12  
=MESSAGEBOX("Правильно введите номер!", 48 )
this.txtNomer.SetFocus && Здесь я так понимаю надо вернуть фокус в текущий объект который txtnomer
RETURN 
ENDIF

сделайте так Лисонька

Код: plaintext
1.
2.
3.
4.
IF EMPTY(this.value)= .f. AND  LEN(RTRIM(this.value))< 12  
=MESSAGEBOX("Правильно введите номер!", 48 )
thisform.txtNomer.SetFocus  && Возвращаем фокус в TXTnomer на текущей форме
RETURN 
ENDIF
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558717
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати Return не обязателен
т.е.

Код: plaintext
1.
2.
3.
IF EMPTY(this.value)= .f. AND  LEN(RTRIM(this.value))< 12  
=MESSAGEBOX("Правильно введите номер!", 48 )
thisform.txtNomer.SetFocus  && Возвращаем фокус в TXTnomer на текущей форме
ENDIF
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558727
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я написал пример выше - смотрите

не делайте никаких сетфокусов


Лисонька, вышлите маску
я посмотрю
нужно ли обходить чего
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558763
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лисонька, добрый день!
Я бы поместил Ваш код в кнопку "ВВОД" или "Применить". Так будет правильней. Помещать его в Valid - это проявление неуважения к пользователю
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33558924
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джентльмены, спасибо вам всем-всем-всем!
И файл я посмотрела, и ответы ваши.
Дело действительно лишь в том, что надо убрать в коде строку с SetFocus, а к RETURN добавть или .f. (но тогда выдается сообщение Фокса Invalid Input) или 0. Я просто не знала про эти атрибуты, а Help для RETURN читала давно.
Не ругайтесь, что проверка у меня выполняется не при попытке сохранить данные, а при выходе их текстбокса, это просьба оператора - если что не так, ему остальные данные не вводить, но изначально проверка длины прописана была именно в коммандной кнопке ОК.
12 символов - это не банковский счет, до таких серьезных программ я никогда не дорасту. Просто летом грядет какая-то всеобщая деспансеризация, и с моей шефихи трясут списки работников, которые должны эту ...изацию проходить. Списки берутся их электронной картотеки. А в картотеке имеется такое поле, как номер страхового медицинского полиса. И как раз номер этот состоит из 12 символов.
Еще раз благодарю всех.

Елизавета Скрунскайте
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33559478
Doktor Gradus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну почему бы и не в Valid?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
local ln_Answer

if !empty( this.value ) and len( rtrim( this.value )) <  12 
  ln_Answer = messagebox( 'Точно усё у ажуре?',  4  +  48  +  256 , 'Предупреждение ! ! !' )
  if ln_Answer =  7 
      return .f.

  endif
endif

return .t.

И если пользователь сказал "Всё окей", то условие ln_Answer = 7 не выполняется и мы спокойно выходим из валида
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33562067
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi alex11100!

> проверку валидности нужно делать в валиде ....

А я категорически против таких манёвров.
Убогий это обработчик, жестокий донельзя, ни тебе SetFocus потом
попользоваться (а может я хочу при неправильном вводе высветить свою форму
со списком "правильных" вариантов?), ни нормального способа закрыть форму,
ни нажать кнопку "Отмена" (IMHO такую кнопку юзер должен иметь возможность
нажать ВСЕГДА).
Уж если и писать, то в LostFocus - но там надо добавить NODEFAULT, и убрать
SetFocus (он лишний будет).

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33562446
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
автор
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Ну почему бы и не в Valid?

local ln_Answer

if !empty( this.value ) and len( rtrim( this.value )) <  12 
  ln_Answer = messagebox( 'Точно усё у ажуре?',  4  +  48  +  256 , 'Предупреждение ! ! !' )
  if ln_Answer =  7 
      return .f.

  endif
endif

return .t.



И если пользователь сказал "Всё окей", то условие ln_Answer = 7 не выполняется и мы спокойно выходим из валида

Так можно, но у пользователей должна быть возможность включать/отключать такой режим по собственному желанию (ИМХО)
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33562448
Doktor Gradus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свою форму из валида -- как раз запросто :) А вот с остальным я согласен на все 100% :)
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33562842
О_В_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doktor GradusНу почему бы и не в Valid?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
local ln_Answer

if !empty( this.value ) and len( rtrim( this.value )) <  12 
  ln_Answer = messagebox( 'Точно усё у ажуре?',  4  +  48  +  256 , 'Предупреждение ! ! !' )
  if ln_Answer =  7 
      return .f.

  endif
endif

return .t.

И если пользователь сказал "Всё окей", то условие ln_Answer = 7 не выполняется и мы спокойно выходим из валида
Тоже ИМХО
Не, это тормоза для пользователя. Кажный раз отвечать ажур или не ажур морда тресне. А еси у него таких txtbox'ов 3 штуки? 10? 20? Не, господа, скорость внесения данных для оператора это один из важных критериев работы.
Что сразу предоложил Alex11100 это и надо использовать:
IF LEN(alltRIM(this.value))<12
=MESSAGEBOX("Правильно введите номер!",48)
RETURN .f.
ENDIF
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33564799
Doktor Gradus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ведь месаджбокс вываливается, только если оператор неправильно что-то ввёл. А если он всё ввёл правильно, то ничего.... молча играем дальше. Здесь проблема в том, на что согласен оператор (если у нас есть возможность контактировать с оператором во время разработки приложения). Если он хочет, чтобы сразу по выходе из текстбокса вылезал месаджбокс, то и делаем сразу. Если его устраивает вариант по кнопке "Дальше/Сохранить/и т.п.", то так и делаем. Можно сделать оба варианта и предлагать пользователю в настройках установить нужный.

Мои пользователи часто хотят не только проверку по выходе из текстбокса, но ещё, чтобы и месаджбокс при неверном вводе был нестандартный. То есть приходится рисовать свою форму - аналог мессаджбокса (как правило, речь идёт о том, чтобы увеличить шрифт, изменить цвет сообщения и прикрутить свой набор кнопок вместо стандартных Yes/No/Cancel/OK).
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33565055
О_В_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doktor GradusТак ведь месаджбокс вываливается, только если оператор неправильно что-то ввёл ..... То есть приходится рисовать свою форму - аналог мессаджбокса (как правило, речь идёт о том, чтобы увеличить шрифт, изменить цвет сообщения и прикрутить свой набор кнопок вместо стандартных Yes/No/Cancel/OK).
Согласен, что нектоорые месаджи нужно особо выделить для пользователя, но здесь идет речь о рутинной работе, 12 знаков я так понял обязательны. А если обзательны, то достаточно пользователю просто сообщить о его ошибке\описке. И всеже повторю - это ИМХО.
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33566430
Doktor Gradus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О_В_Д

А когда сообщать? И где? Фирменный wait window фокса далеко не все воспринимают как что-то полезное. Скорее, наоборот, как досадную помеху. Многие вообще его не замечают. И удивляются, чего это программа брыкается вдруг.

О_В_Дно здесь идет речь о рутинной работе

В таких случаях я обычно подсвечиваю BackGround самого текстбокса: красный -- пока он не заполнен, как положено, зелёный -- всё в порядке, можно покинуть текстбокс. Пользователи в восторге. Валид отдыхает, все проверки, ессно, в InteractiveChange или KeyPress. И сразу видно, что к чему. Где ошибки.
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33566447
Doktor Gradus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл добавить -- я не настаиваю на своих решениях. Потому как, имею возможность (и пользуюсь ею) договориться с пользователем -- что, где и как. Где достаточно подсветить, где проверка при нажатии кнопки, а где и жёсткий валид. Просто, на мой взгляд, применять валид имеет смысл там -- где ошибка -- фатальна . Не в том смысле, что смертельна, а в том смысле, что может иметь весьма неприятные последствия в плане материальных и моральных затрат.

Я не знаю, как в данной задаче у Лисоньки, но полагаю, что неполностью ввести "номер страхового медицинского полиса", это всё равно, что его не ввести совсем. Но здесь как раз достаточно подсветки объекта зелёным, если длина в порядке. Потому что соответствие введённых циферок написанным на бумаге проверить программным путём... Ну, разве что сканером, и то не факт...
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33566509
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джентльмены, да хватит вам перья ломать да клавиатуру впустую долбить! Да какая разница, как указать пользователю на его ошибку? Главное - достоверность информации. Ну вот сделала я сегодня и в Valid, и в LostFocus, и с сообщением, и без. И что толку? Шефиха моя (эх, когда-то подругами слыли, я у ней 10 лет назад свидетельницей на свадьбе была!) вообще осталась недовольна, мол на всякую ерунду время трачу (знал бы ее муж как она его деньги тратит!). Одни пользователи ратуют за сообщения об ошибках, как ранее было - при попытке сохранения, другие млеют от Valid'а - минуты по две сидели и тупо специально делали ошибки, наслаждаясь выскакивающим Message. Типа пытались машину обмануть? А потом начали просить, чтобы у каждого было так, как ему понравилось. Я разозлисась и вообще сделала откат проги к прошлой неделе. Они шум подняли: "Вот, ходит, место чужое занимает, сама толком ничего не может!!"
Вот делай людям добро после этого... ((((((
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33578613
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Doktor Gradus!

> Свою форму из валида -- как раз запросто :)

Дело не в самом вызове формы, а в том что та форма вполне себе может в
какой-то момент вызвать SetFocus (а отказаться от использования этого метода
ВЕЗДЕ - это практически нереально) - тут то фокс и припомнит нам откуда мы
форму вызвали...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Фокус не остается на объекте
    #33578884
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДело не в самом вызове формы, а в том что та форма вполне себе может в
какой-то момент вызвать SetFocus (а отказаться от использования этого метода
ВЕЗДЕ - это практически нереально) - тут то фокс и припомнит нам откуда мы
форму вызвали...

Отож. Подобная ситуация вынудила отказатся от Valid-ов и все проверки перенести в LostFocus, а решение о переходе или возврате принимать в GotFocus-е. Для однообразия
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Фокус не остается на объекте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]