powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / табуляция и LostFocus
21 сообщений из 21, страница 1 из 1
табуляция и LostFocus
    #39642637
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток! Небольшая проблема с переходом между записями в ленточной форме: переход между записями, как мы знаем, возможен при нажатии Tab, Enter, стрелками вверх/вниз или мышью, но если обрабатывается событие LostFocus какого-нибудь контрола, то переход к другому контролу/записи осуществляется только при повторном нажатии Tab, Enter, стрелок вверх/вниз или кнопки мыши. Тоже самое, если обрабатывается AfterUpdate.
Можно как-то исправить этот косяк?
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39642642
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BeliarВ но если обрабатывается событие LostFocus какого-нибудь контрола...
Не какого-нибудь, конечно, а последнего по номеру табуляции
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39642668
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar,
Подобную ситуацию воспроизвести не удалось-может у Вас структура не правильная,может в процедуре что ни так написано(вариантов много)-короче БД в студию-без этого что-либо советовать не берусь
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39642675
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю, стоит уточнить, как именно обрабатывается LostFocus. На форме 2 поля txt1 и txt2 (соответсвующие поля рекордсета именованы так же). У txt1 табуляция отключена, у txt2 включена. И нацарапана вот такая проверочка:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub txt2_LostFocus()
    if isnull(txt1)=false then
        txt2=now()
    else
        txt2=null
    end if
end sub


Что из этого обрывает выполнение LostFocus?
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39642678
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В случае без Else гонит только при выполнении условия If.
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39642681
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправочка
if isnull(txt1.Value)=false then

Т.е. если компилятор переходит к действиям для Then или Else, то LostFocus или AfterUpdate не выполняются, но тогда почему повторная попытка передать фокус проходит?
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39642730
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar,
Value свойство "умолчательное" и указывать его нет никакой нужды.
Если поле txt пустое(а не NULL) что вернет IsNull ?
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39642985
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuBeliar,
Value свойство "умолчательное" и указывать его нет никакой нужды.
Если поле txt пустое(а не NULL) что вернет IsNull ?
Несмотря на название, поле имеет числовой формат
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39642986
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот бд, лишнее убрано.
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39643183
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пропсиал вот так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub payment_LostFocus()
    MsgBox "1"
    If IsNull(payment) = False Then
            MsgBox "2.yes"
            payment_date = Format(Now(), "dd.mm.yyyy")
            MsgBox "3.yes"
    Else:
        MsgBox "2.no"
        payment_date = Null
        MsgBox "3.no"
    End If
    MsgBox "4"
End Sub


После сообщения "4" фокус просто остается на месте, и только при следующем нажатии Enter передается след.контролу, уже не выполняя ничего из этой процедуры.
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39643192
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А попробовать поставить оператор SetFocus не пробовали?
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39643196
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может есть какая-нибудь имитация нажатия клавиш "стрелка вниз" и "стрелка вверх", или хотя бы Enter, Tab? Это бы решило проблему... может быть
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39643201
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JossА попробовать поставить оператор SetFocus не пробовали?с последнего по номеру табуляции элемента? И куда его сэтить? Не, не годится. Скажем, юзер нажал Enter на последнем элементе, фокус должен уйти на след запись, а что если юзер нажмет левым кликом мыши на следующую или другую запись?
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39643214
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то есть имитация нажатия клавиши - оператор SendKeys
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39643291
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JossВообще-то есть имитация нажатия клавиши - оператор SendKeys
Ну да, оно самое) только вот еще надо знать, нажатием какой клавиши юзер выходит из этого поля. Т.е. к примеру, это событие KeyDown, но где его ловить?
При переводе фокуса на существующую запись в форме, вводе новых или изменении существующих данных в записи и при переходе на другую запись возникает такая последовательность событий:

Current (форма) -> BeforeUpdate (форма) -> AfterUpdate (форма) -> Current (форма)

При выходе из измененной записи, но до входа в новую возникают события Exit и LostFocus для последнего элемента управления, имевшего фокус. Эти события возникают после событий формы BeforeUpdate и AfterUpdate:

BeforeUpdate (форма) -> AfterUpdate (форма) -> Exit (элемент управления) -> LostFocus (элемент управления) -> RecordExit (форма) > Current (форма)Я точно не знаю, но скорее всего нажатие, к примеру, Enter'a происходит до этих событий
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39643296
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне лично не понятно желание ТС что-либо изменить в сохраненных записях(при выполнении условия NOW,при невыполнении NULL-какой смысл в этом и зачем изменять запись получив текущее значение даты в записях,где побывал курсор, лишаясь, напрочь, истории?) Может речь идет о банальном значении по умолчанию?
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39643300
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или ловить все нажатия клавиш на форме, передавать их в переменную, а в LostFocus получать значение этой переменной. Что-то типа
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Select Case KeyCode

   K1=KeyCode
end select

End sub



Код: vbnet
1.
2.
3.
4.
5.
Private Sub payment_LostFocus()
    'прежний код
    txtKey="{" & K1 & "}"
    SendKeys txtKey
End Sub


Надо проверять
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39643535
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuМне лично не понятно желание ТС что-либо изменить в сохраненных записях(при выполнении условия NOW,при невыполнении NULL-какой смысл в этом и зачем изменять запись получив текущее значение даты в записях,где побывал курсор, лишаясь, напрочь, истории?) Может речь идет о банальном значении по умолчанию?
Необходимо освободить пользователя от проставления даты, она должна ставиться автоматически (и именно текущая), но только если заполнено поле "payment", и наоборот, если в "payment" значение удаляют, то и дата должна удалиться. При этом должна остаться возможность редактирования даты вручную для случая внесения данных пост-фактум. А старые даты на now не меняются, просто я удалил код проверки поля "payments_date" в той бд, которую выложил здесь, а так-то все путем. Все работает правильно, раздражает только переход к другому контролу двойным долбежом интера или таба.
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39643552
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beliar,
Я правильно Вас понял это хотите или не так:
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39644131
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuBeliar,
Я правильно Вас понял это хотите или не так:
Немного по-другому: речь идет о событии LostFocus, хотя не важно, в AfterUpdate тоже самое. Важно другое: убираем переход по табу для полей код и ctl1 и получается так же как у меня: первое нажатие интера или таба переводит в режим редактирования поля ctl и только второе нажатие передает фокус. Исправленный пример во вложении.
...
Рейтинг: 0 / 0
табуляция и LostFocus
    #39644136
Beliar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а события формы KeyDown, KeyPress и KeyUp вообще не работают, ничего из прописанного кода не делается. Специально msgbox'ы туда прописывал, нихера не срабатывает.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / табуляция и LostFocus
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]