Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 Как корректно обойти в DataWindow событие LoseFocus(), исп  [new]
urvas
Member

Откуда: СПб
Сообщений: 383
ользуя PB 10?
Речь идет о том, что необходимо в сценарии какого-то события ДВ вызвать messagebox или окно типа responce (но ещё не все необходимые поля заполнены), но они вызывают LoseFocus, а там стоит вызов Update.
1 июл 05, 20:29    [1669097]     Ответить | Цитировать Сообщить модератору
 Re: Как корректно обойти в DataWindow событие LoseFocus(), исп  [new]
Филипп
Member

Откуда: Boston, MA, USA (c 1989 ) б. Москва
Сообщений: 1880
Во-первых, НИКАК.
Во-вторых, вызов Update в LoseFocus есть абсолютная и необсуждаемая глупость.
1 июл 05, 21:33    [1669189]     Ответить | Цитировать Сообщить модератору
 Re: Как корректно обойти в DataWindow событие LoseFocus(), исп  [new]
Amberit
Member

Откуда: Киев
Сообщений: 765
Уважаемый однофорумчанин!

А почему бы Вам не использовать Validation Expression's ДатаВиндовса? Ведь они для таких целей и разрабатывались... Правда, LoseFocus и в этом случае сработает... ;-)))

Да и вешать Update на событие LoseFocus... Ведь если пользователь вдруг вздумает совместно с работой в Вашем приложении поиграть в пасьянс, что будет? Правильно - ненужный Update... А если еще этот запрос будет идти на удаленный сервер - вот Вам и ненужный трафик... А если еще и не предусмотреть корректную обработку такого Update - вот Вам и ошибки в базе данных... ;-)))

Так что совет один - убирайте Update из LoseFocus - все равно рано или поздно это сделать прийдется... ;-)))
1 июл 05, 21:37    [1669191]     Ответить | Цитировать Сообщить модератору
 Re: Как корректно обойти в DataWindow событие LoseFocus(), исп  [new]
Локшин Марк
Member

Откуда: Воронеж
Сообщений: 3154
urvas
ользуя PB 10?
Речь идет о том, что необходимо в сценарии какого-то события ДВ вызвать messagebox или окно типа responce (но ещё не все необходимые поля заполнены), но они вызывают LoseFocus, а там стоит вызов Update.

1. Заводим instance переменную long il_check_input = 1
2. На LoseFocus пишем что-то типа
if il_check_input = 0 then return
...
3. При вызове окна
il_check_input = 0
open(w_responce_window)
il_check_input = 1

Только действительно, все это выглядит достаточно глупо, так как фокус может теряться по очень многим причинам...
2 июл 05, 11:45    [1669509]     Ответить | Цитировать Сообщить модератору
 Re: Как корректно обойти в DataWindow событие LoseFocus(), исп  [new]
urvas
Member

Откуда: СПб
Сообщений: 383
Оно, конечно, может и глупость, но как удовлетворить совершенно справедливое требование пользователя о необходимости принудительного сохранения данных при окончании работы с конкретным ДВ, например, при переходе на другое ДВ в этом же окне?
4 июл 05, 09:27    [1670868]     Ответить | Цитировать Сообщить модератору
 Re: Как корректно обойти в DataWindow событие LoseFocus(), исп  [new]
gal20
Member

Откуда:
Сообщений: 27
urvas
Оно, конечно, может и глупость, но как удовлетворить совершенно справедливое требование пользователя о необходимости принудительного сохранения данных при окончании работы с конкретным ДВ, например, при переходе на другое ДВ в этом же окне?


Так вызывать Update надо, когда действительно есть переход в другое DW, а не потеря фокуса первым DW
4 июл 05, 10:24    [1671040]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить