
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
02.02.2006, 22:46
|
|||
|---|---|---|---|
Valid & TableRevert |
|||
|
#18+
Установлена буферизация № 5. Делаю APPEND BLANK. Ввод непосредственно в Гриде. На Grid.Column1.Text1.Valid() установлено: RETURN !EMPTY(This.Value) Если я оставляю это поле пустым, то естественно появляется сообщение об ошибке. В этот момент я жму кнопку, на которой стоит Tablerevert(.T.). Из Грида исчезает пустая новая запись. Но Фокс все-таки донимает сообщением о том, что поле is EMPTY. А почему так? Вроде, должно быть по-сталински: "Нет поля – нет проблемы!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.02.2006, 20:02
|
|||
|---|---|---|---|
Valid & TableRevert |
|||
|
#18+
:) Поведение фокса правильное. Valid() - функция цепкая, обмануть ее невозможно, она обеспечивает обязательную проверку условия перед потерей фокуса объектом, но использование в таком виде (Return Условие()) причинит Вам массу неудобств - например не сможете даже закрыть форму по [x] (и по пункту меню, и по кнопке тулбара), пока поле остается пустым. В Вашем случае она привязана к значению текстбокса в гриде (.Value), которая вычисляется вне зависимости от того, есть "под ней" запись в таблице или нет. То есть в Valid() помещайте реакцию на введенное значение, не запрещая выход из самого поля (не ставьте Return ...). Что-то такое: ** Text1.Valid() If Empty(This.Value) ** можно вставить сообщение (запрос) пользователю о пустоте и в зависимоти от его реакции либо откатить TableRevert(), либо продолжить редактирование. Endif Также посмотрите в сторону события LostFocus() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.02.2006, 03:40
|
|||
|---|---|---|---|
Valid & TableRevert |
|||
|
#18+
Не такие уж цепкие эти LostFocus и Valid. :)) В том-то и проблема! При редактировании таблицы прямо в Гриде, хотелось сделать так, чтобы Text1 не оставался пустым. Если ставил в Grid1.Column1.Text1.Valid() проверку: RETURN !Empty(This.Value), то сообщение об ошибке появлялось, но с записи на запись или с поля на поле в этом в Гриде перейти нельзя. Но мышью можно было нажимать посторонние кнопочки, что НИЗЗЯ. Та же история, если проверку закинуть в Rule (Field Validation) – при пустом Text1 гуляй по Форме, где хочешь, кроме строк этого Грида. Если же проверка была на уровне Grid1.Valid(): RETURN !Empty(This.Column1.Text1.Value), то с пустым Text1 убежать из Грида уже было нельзя. Но зато при пустой таблице (Grid.RecordSource), сам Грид становился роковой западней. Тут все схвачено! Оставалось только Фокс снять. Можно, конечно, сделать проверку на количество записей в таблице или в Valid() прописывать какой-нибудь балласт в пустое поле, но мне кажется, есть вариант правильнее и проще. А как нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.02.2006, 03:55
|
|||
|---|---|---|---|
|
|||
Valid & TableRevert |
|||
|
#18+
Hi men dea! Ну сказано же как нужно - не блокировать выход и всё - а известить пользователя о том что не всё тут в порядке, заблокировать кнопку сохранения, покрасить "нехорошее" поле другим цветом и т.п. - это уж как фантазии хватит. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.02.2006, 15:27
|
|||
|---|---|---|---|
Valid & TableRevert |
|||
|
#18+
В том-то и дело, что таких нехороших кнопок у меня миллион. Не хотелось каждый раз ставить им Enabled=.f., а потом восстанавливать доступность. Выходит, что все равно будет все сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=41&tablet=1&tid=1592390]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 309ms |

| 0 / 0 |
