|
|
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
Привет всем. Столкнулся с проблемкой: есть два спиннера (минимальное и максимальное значение) и простенькая проверка на непривышение минимального значения над максимальным. вот когда мин>макс выдает сообщение об ошыбке (сообщение из errormessage) А теперь суть проблемы - оно еще требует нажатия пробела, причем это я увидел только при отладке, когда прога работает этого сообщения нету и ненажав пробел ничего невозможно сделать. как это обойти? Всем спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:06 |
|
||
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
А где происходит проверка на правильность ввода (в каком событии спиннера)? Если в событии Valid, то оно происходит только перед потерей фокуса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:24 |
|
||
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
проверка в Valid iif(max < min,return .f.,return .t.) я сделал новую форму и поместил на нее 2 спинера - при ошибке відает мое сообщение а затем в правом верхнем угла маленькое окошко с текстом "invalid input" и фокус возвращается в спиннер. а в програме этого окошка нету и надо жать пробел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:36 |
|
||
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
авторiif(max < min,return .f.,return .t.) И че только люди не удумают... Возврат прямо из вычисляемого выражения... Да еще по результату логического выражения прописываем отдельно логический же результат... Жуть... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:41 |
|
||
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
проходящий.[quot автор]iif(max < min,return .f.,return .t.) И че только люди не удумают... Возврат прямо из вычисляемого выражения... Да еще по результату логического выражения прописываем отдельно логический же результат... Жуть... но ведь работает... или есть какие-то "подводные камни"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 13:46 |
|
||
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
Да вроде бы нет ни каких подводных каней. Как я и говорил в Valid проверка будет происходить только после нажатия интер или пробел, таб и т.д. Если заранее знать размерность чисел, то можно организовать проверку на уровне interActiveChange, это будет интересней. Например размерность = 2знакам IF LEN(ALLTRIM(STR(This.Value)))=2 && Проверк на вшивость ENDIF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 14:24 |
|
||
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
P.S. А маленькое окошечко выскакивает потому что из валид возвращается F. Посмотри Help там всё написано... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 14:26 |
|
||
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
Чета сразу не подумал: В Spinner1- InterAcniveChange ThisForm.Spinner2.KeyBoardLowValue=This.Value ThisForm.Spinner2.SpinnerLowValue=This.Value А второй спайнер Enabled=.F. если значение первого =0! Вот и вся поверка!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 14:36 |
|
||
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
да суть не в том как сделать проверку... а как исправить значение спинера когда ввел неправильное значение. когда просто создал форму и встувил спинер, после ввода неверного значения выдает сообщение "invalid input" и возвращает указатель в спинер для исправления значения. у меня в проге НЕ выдает этого окошечка а возвращает курсор в спинер и требует нажатия пробела (причем фраза "press Spacebar" выдается в самом низу экрана на сером фоне и видно ее только в режиме отладки) потому пользователь пытается исправить значение... а оно типа висит пока ненажмеш пробел. Вот в чем проблема ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 18:14 |
|
||
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
Вообще-то, Вам следовалы бы почитать HELP по событию Valid и реакции объекта на то, что возвращает это событие. Но, поскольку еще никто никогда HELP не читал, то, вкратце: RETURN .T. - штатный выход из объекта и переход на следующий или предыддущий объект (в зависимости от способа выхода) RETURN .F. - блокирует выход из объекта и появляется сообщение "Invalid Input" RETURN 0 - блокирует выход из объекта, но никаких сообщений об ошибках не появляется RETURN N - здесь N - это целое число. Положительное или отрицательное. Штатный выход из объекта и переход на объект у которого значение TabIndex отличается на N от значения TabIndex данного объекта. Исправить значение на корректное можно там же, в событии Valid. Однако поскольку Вы сравниваете значение двух объектов, то исправлять значение или блокировать выход из одного из них - бессмысленно. Ведь неизвестно значение в каком объекте надо исправлять. В том, где Вы сейчас находитесь или в другом. Поэтому, логично повесить подобную проверку на кнопку "Сохранить" и там выдавать сообщение вроде "Минимальное значение больше максимального!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2007, 22:03 |
|
||
|
Valid в Spinner
|
|||
|---|---|---|---|
|
#18+
Большое спасибо Владимир. Я всегда ценю вашу помощь. И сейчас, ваша идея перенести проверку в кнопку "сохранить" - весьма удачна. А хелп - я читал, и прописал в valid return .f. дабы окошко с ошыбкой показать, но оно не появляется... :( ну и ладно, перенесу проверку и дело с концом. Всем спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 10:06 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34830129&tid=1588728]: |
0ms |
get settings: |
8ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 382ms |

| 0 / 0 |
