Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Valid в Spinner  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
Привет всем.
Столкнулся с проблемкой: есть два спиннера (минимальное и максимальное значение)
и простенькая проверка на непривышение минимального значения над максимальным.
вот когда мин>макс выдает сообщение об ошыбке (сообщение из errormessage)
А теперь суть проблемы - оно еще требует нажатия пробела, причем это я увидел только при отладке, когда прога работает этого сообщения нету и ненажав пробел ничего невозможно сделать. как это обойти?
Всем спасибо
26 сен 07, 13:06    [4717307]     Ответить | Цитировать Сообщить модератору
 Re: Valid в Spinner  [new]
MiklS
Member

Откуда: Владивосток
Сообщений: 131
А где происходит проверка на правильность ввода (в каком событии спиннера)? Если в событии Valid, то оно происходит только перед потерей фокуса.
26 сен 07, 13:24    [4717512]     Ответить | Цитировать Сообщить модератору
 Re: Valid в Spinner  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
проверка в Valid
iif(max < min,return .f.,return .t.)
я сделал новую форму и поместил на нее 2 спинера - при ошибке відает мое сообщение а затем в правом верхнем угла маленькое окошко с текстом "invalid input" и фокус возвращается в спиннер.
а в програме этого окошка нету и надо жать пробел
26 сен 07, 13:36    [4717635]     Ответить | Цитировать Сообщить модератору
 Re: Valid в Spinner  [new]
проходящий.
Guest
автор
iif(max < min,return .f.,return .t.)

И че только люди не удумают... Возврат прямо из вычисляемого выражения... Да еще по результату логического выражения прописываем отдельно логический же результат... Жуть...

Return not max < min
26 сен 07, 13:41    [4717696]     Ответить | Цитировать Сообщить модератору
 Re: Valid в Spinner  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
проходящий.
[quot автор]iif(max < min,return .f.,return .t.)

И че только люди не удумают... Возврат прямо из вычисляемого выражения... Да еще по результату логического выражения прописываем отдельно логический же результат... Жуть...

но ведь работает... или есть какие-то "подводные камни"?
26 сен 07, 13:46    [4717748]     Ответить | Цитировать Сообщить модератору
 Re: Valid в Spinner  [new]
MiklS
Member

Откуда: Владивосток
Сообщений: 131
Да вроде бы нет ни каких подводных каней. Как я и говорил в Valid проверка будет происходить только после нажатия интер или пробел, таб и т.д. Если заранее знать размерность чисел, то можно организовать проверку на уровне interActiveChange, это будет интересней.
Например размерность = 2знакам
IF LEN(ALLTRIM(STR(This.Value)))=2
&& Проверк на вшивость
ENDIF
26 сен 07, 14:24    [4718117]     Ответить | Цитировать Сообщить модератору
 Re: Valid в Spinner  [new]
MiklS
Member

Откуда: Владивосток
Сообщений: 131
P.S. А маленькое окошечко выскакивает потому что из валид возвращается F. Посмотри Help там всё написано...
26 сен 07, 14:26    [4718135]     Ответить | Цитировать Сообщить модератору
 Re: Valid в Spinner  [new]
MiklS
Member

Откуда: Владивосток
Сообщений: 131
Чета сразу не подумал:
В Spinner1- InterAcniveChange
ThisForm.Spinner2.KeyBoardLowValue=This.Value
ThisForm.Spinner2.SpinnerLowValue=This.Value
А второй спайнер Enabled=.F. если значение первого =0!
Вот и вся поверка!!!!!
26 сен 07, 14:36    [4718233]     Ответить | Цитировать Сообщить модератору
 Re: Valid в Spinner  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
да суть не в том как сделать проверку... а как исправить значение спинера когда ввел неправильное значение.
когда просто создал форму и встувил спинер, после ввода неверного значения выдает сообщение "invalid input" и возвращает указатель в спинер для исправления значения.
у меня в проге НЕ выдает этого окошечка а возвращает курсор в спинер и требует нажатия пробела (причем фраза "press Spacebar" выдается в самом низу экрана на сером фоне и видно ее только в режиме отладки) потому пользователь пытается исправить значение... а оно типа висит пока ненажмеш пробел.
Вот в чем проблема
26 сен 07, 18:14    [4720116]     Ответить | Цитировать Сообщить модератору
 Re: Valid в Spinner  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Вообще-то, Вам следовалы бы почитать HELP по событию Valid и реакции объекта на то, что возвращает это событие. Но, поскольку еще никто никогда HELP не читал, то, вкратце:

RETURN .T. - штатный выход из объекта и переход на следующий или предыддущий объект (в зависимости от способа выхода)
RETURN .F. - блокирует выход из объекта и появляется сообщение "Invalid Input"
RETURN 0 - блокирует выход из объекта, но никаких сообщений об ошибках не появляется
RETURN N - здесь N - это целое число. Положительное или отрицательное. Штатный выход из объекта и переход на объект у которого значение TabIndex отличается на N от значения TabIndex данного объекта.

Исправить значение на корректное можно там же, в событии Valid.

Однако поскольку Вы сравниваете значение двух объектов, то исправлять значение или блокировать выход из одного из них - бессмысленно. Ведь неизвестно значение в каком объекте надо исправлять. В том, где Вы сейчас находитесь или в другом.

Поэтому, логично повесить подобную проверку на кнопку "Сохранить" и там выдавать сообщение вроде "Минимальное значение больше максимального!"
26 сен 07, 22:03    [4720980]     Ответить | Цитировать Сообщить модератору
 Re: Valid в Spinner  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
Большое спасибо Владимир. Я всегда ценю вашу помощь.
И сейчас, ваша идея перенести проверку в кнопку "сохранить" - весьма удачна.
А хелп - я читал, и прописал в valid return .f. дабы окошко с ошыбкой показать, но оно не появляется... :( ну и ладно, перенесу проверку и дело с концом.
Всем спасибо
27 сен 07, 10:06    [4721868]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить