Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Фокус не остается на объекте / 25 сообщений из 34, страница 1 из 2
21.02.2006, 14:46
    #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
21.02.2006, 14:50
    #33558508
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фокус не остается на объекте
ЛисонькаЛеди и джентльмены!
Благодарюиспользуй событие ::Valid()
...
Рейтинг: 0 / 0
21.02.2006, 14:50
    #33558511
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фокус не остается на объекте
ну вообче та лучше в валиде прописать нешто
IF LEN(alltRIM(this.value))<12
=MESSAGEBOX("Правильно введите номер!",48)
RETURN .f.
ENDIF
...
Рейтинг: 0 / 0
21.02.2006, 14:51
    #33558518
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фокус не остается на объекте
ЛисонькаЧто прописала в коде не так?а если в твой код дописать NODEFAULT - че тогда будет ? может, повезет
...
Рейтинг: 0 / 0
21.02.2006, 14:53
    #33558527
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фокус не остается на объекте
alex11100ну вообче та лучше в валиде прописать нешто
IF LEN(alltRIM(this.value))<12
=MESSAGEBOX("Правильно введите номер!",48)
RETURN .f.
ENDIFа че толку
серано это ::LostFocus()
...
Рейтинг: 0 / 0
21.02.2006, 14:55
    #33558535
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фокус не остается на объекте
быть этого не могет

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

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

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

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

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

вот и все

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

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

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

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

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

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

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

RETURN .F.

или

RETURN 0

В последнем случае не будет выскакивать системное сообщение об ошибке.
...
Рейтинг: 0 / 0
21.02.2006, 15:46
    #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
21.02.2006, 15:47
    #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
21.02.2006, 15:51
    #33558727
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фокус не остается на объекте
я написал пример выше - смотрите

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


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

Елизавета Скрунскайте
...
Рейтинг: 0 / 0
21.02.2006, 22:01
    #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
23.02.2006, 01:32
    #33562067
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фокус не остается на объекте
Hi alex11100!

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

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

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
23.02.2006, 12:49
    #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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Фокус не остается на объекте / 25 сообщений из 34, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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