|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
Всем доброго времени суток! Небольшая проблема с переходом между записями в ленточной форме: переход между записями, как мы знаем, возможен при нажатии Tab, Enter, стрелками вверх/вниз или мышью, но если обрабатывается событие LostFocus какого-нибудь контрола, то переход к другому контролу/записи осуществляется только при повторном нажатии Tab, Enter, стрелок вверх/вниз или кнопки мыши. Тоже самое, если обрабатывается AfterUpdate. Можно как-то исправить этот косяк? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 13:49 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
BeliarВ но если обрабатывается событие LostFocus какого-нибудь контрола... Не какого-нибудь, конечно, а последнего по номеру табуляции ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 13:51 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
Beliar, Подобную ситуацию воспроизвести не удалось-может у Вас структура не правильная,может в процедуре что ни так написано(вариантов много)-короче БД в студию-без этого что-либо советовать не берусь ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 14:15 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
Думаю, стоит уточнить, как именно обрабатывается LostFocus. На форме 2 поля txt1 и txt2 (соответсвующие поля рекордсета именованы так же). У txt1 табуляция отключена, у txt2 включена. И нацарапана вот такая проверочка: Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Что из этого обрывает выполнение LostFocus? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 14:23 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
В случае без Else гонит только при выполнении условия If. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 14:25 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
Поправочка if isnull(txt1.Value)=false then Т.е. если компилятор переходит к действиям для Then или Else, то LostFocus или AfterUpdate не выполняются, но тогда почему повторная попытка передать фокус проходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 14:30 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
Beliar, Value свойство "умолчательное" и указывать его нет никакой нужды. Если поле txt пустое(а не NULL) что вернет IsNull ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:29 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
sdkuBeliar, Value свойство "умолчательное" и указывать его нет никакой нужды. Если поле txt пустое(а не NULL) что вернет IsNull ? Несмотря на название, поле имеет числовой формат ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 05:57 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
вот бд, лишнее убрано. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 06:07 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
Пропсиал вот так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
После сообщения "4" фокус просто остается на месте, и только при следующем нажатии Enter передается след.контролу, уже не выполняя ничего из этой процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 12:26 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
А попробовать поставить оператор SetFocus не пробовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 12:37 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
А может есть какая-нибудь имитация нажатия клавиш "стрелка вниз" и "стрелка вверх", или хотя бы Enter, Tab? Это бы решило проблему... может быть ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 12:40 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
JossА попробовать поставить оператор SetFocus не пробовали?с последнего по номеру табуляции элемента? И куда его сэтить? Не, не годится. Скажем, юзер нажал Enter на последнем элементе, фокус должен уйти на след запись, а что если юзер нажмет левым кликом мыши на следующую или другую запись? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 12:43 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
Вообще-то есть имитация нажатия клавиши - оператор SendKeys ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 12:56 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
JossВообще-то есть имитация нажатия клавиши - оператор SendKeys Ну да, оно самое) только вот еще надо знать, нажатием какой клавиши юзер выходит из этого поля. Т.е. к примеру, это событие KeyDown, но где его ловить? При переводе фокуса на существующую запись в форме, вводе новых или изменении существующих данных в записи и при переходе на другую запись возникает такая последовательность событий: Current (форма) -> BeforeUpdate (форма) -> AfterUpdate (форма) -> Current (форма) При выходе из измененной записи, но до входа в новую возникают события Exit и LostFocus для последнего элемента управления, имевшего фокус. Эти события возникают после событий формы BeforeUpdate и AfterUpdate: BeforeUpdate (форма) -> AfterUpdate (форма) -> Exit (элемент управления) -> LostFocus (элемент управления) -> RecordExit (форма) > Current (форма)Я точно не знаю, но скорее всего нажатие, к примеру, Enter'a происходит до этих событий ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 14:46 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
Мне лично не понятно желание ТС что-либо изменить в сохраненных записях(при выполнении условия NOW,при невыполнении NULL-какой смысл в этом и зачем изменять запись получив текущее значение даты в записях,где побывал курсор, лишаясь, напрочь, истории?) Может речь идет о банальном значении по умолчанию? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 14:57 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
Или ловить все нажатия клавиш на форме, передавать их в переменную, а в LostFocus получать значение этой переменной. Что-то типа Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Код: vbnet 1. 2. 3. 4. 5.
Надо проверять ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 15:01 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
sdkuМне лично не понятно желание ТС что-либо изменить в сохраненных записях(при выполнении условия NOW,при невыполнении NULL-какой смысл в этом и зачем изменять запись получив текущее значение даты в записях,где побывал курсор, лишаясь, напрочь, истории?) Может речь идет о банальном значении по умолчанию? Необходимо освободить пользователя от проставления даты, она должна ставиться автоматически (и именно текущая), но только если заполнено поле "payment", и наоборот, если в "payment" значение удаляют, то и дата должна удалиться. При этом должна остаться возможность редактирования даты вручную для случая внесения данных пост-фактум. А старые даты на now не меняются, просто я удалил код проверки поля "payments_date" в той бд, которую выложил здесь, а так-то все путем. Все работает правильно, раздражает только переход к другому контролу двойным долбежом интера или таба. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2018, 11:05 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
Beliar, Я правильно Вас понял это хотите или не так: ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2018, 11:50 |
|
табуляция и LostFocus
|
|||
---|---|---|---|
#18+
sdkuBeliar, Я правильно Вас понял это хотите или не так: Немного по-другому: речь идет о событии LostFocus, хотя не важно, в AfterUpdate тоже самое. Важно другое: убираем переход по табу для полей код и ctl1 и получается так же как у меня: первое нажатие интера или таба переводит в режим редактирования поля ctl и только второе нажатие передает фокус. Исправленный пример во вложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2018, 08:21 |
|
|
start [/forum/topic.php?desktop=1&fid=45&tid=1611446]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 280ms |
total: | 434ms |
0 / 0 |