powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в программе симмитировать нажатие клавиши "End"?
10 сообщений из 10, страница 1 из 1
Как в программе симмитировать нажатие клавиши "End"?
    #32451955
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свободное поле, вводится некая последовательность символов, по событию "После обновления"(нажатие Enter) происходит отбор данных в подч.форме. После этого фокус принудительно переводится на это поле.
Проблема в том, что при этом выделяется весь ранее введенный в поле текст и нельзя сразу добавлять символы(затрутся уже введенные), приходится сначала нажимать на клаве "End".
Можно ли в коде что-то изобразить? Команда:
Код: plaintext
SendKeys  "{END}" 
естественно не помогает.
...
Рейтинг: 0 / 0
Как в программе симмитировать нажатие клавиши "End"?
    #32452003
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сервис-Параметры, вкладка Клавиатура, группа "Поведение при входе в поле", выбираем "точечку" "Перейти в конец поля".
...
Рейтинг: 0 / 0
Как в программе симмитировать нажатие клавиши "End"?
    #32452028
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор Команда:
SendKeys "{END}"
естественно не помогает.
А SendKeys "{F2}"?
Еще можно
me.Поле.SelStart = len(nz(me.Поле))
(это если не подойдет вариант TRoUbLEs)
...
Рейтинг: 0 / 0
Как в программе симмитировать нажатие клавиши "End"?
    #32452771
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал функцию:
Код: plaintext
1.
2.
3.
strSearch =  " where (([NDog]) like '" & Me!str4Search & "*');" 
Me![СостДог_подч1].Form.RecordSource =  "select * from [истСостДог_подч1]"  & strSearch
Me!str4Search.SetFocus
Me.str4Search.SelStart = Len(Nz(Me.str4Search))
str4Search - это свободное поле с образцом поиска. Добавил кнопку и на событие "Нажатие" указал эту функцию. Все работает .
Указываю эту же функцию на событие "После обновления" для поля str4Search - работать не хочет : происходит переход на первое поле подч.формы.
...
Рейтинг: 0 / 0
Как в программе симмитировать нажатие клавиши "End"?
    #32452820
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Поле0_AfterUpdate()
  МенятьРекордсет
End Sub

Private Sub Поле0_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeyReturn And Shift =  0  Then
    МенятьРекордсет
    Me.Поле0.SelStart = Len(Nz(Me.Поле0)) +  1 
    KeyCode =  0 
  End If
End Sub
...
Рейтинг: 0 / 0
Как в программе симмитировать нажатие клавиши "End"?
    #32452900
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую...
Но все-равно интересно: обращение из двух мест(нажатие кнопки и обновление поля) происходит к одной и той же процедуре, почему ж такая разница в результате?
...
Рейтинг: 0 / 0
Как в программе симмитировать нажатие клавиши "End"?
    #32453107
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает, но не так стабильно, как через кнопку: иногда пропадает изображение курсора в поле ввода.
Причем фокус расположен правильно - в конце введенного текста, если нажать клавишу, то ввод происходит в "правильное" место, но вот самого знака курсора почему-то нет.
И пришлось добавить св-во Text, иначе программа не видет измененных данных
Код: plaintext
1.
2.
3.
4.
5.
If KeyCode = vbKeyReturn And Shift =  0  Then
    strSearch =  " where (([NDog]) like '" & Me!str4Search.Text & "*');" 
    Me![СостДог_подч1].Form.RecordSource =  "select * from [истСостДог_подч1]"  & strSearch
    Me.str4Search.SelStart = Len(Nz(Me.str4Search.Text)) +  1 
    KeyCode =  0 
End If

А зачем процедура "МенятьРекордсет" вызывается 2 раза(в случае нажатия клавиши Enter)?
...
Рейтинг: 0 / 0
Как в программе симмитировать нажатие клавиши "End"?
    #32453517
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geo, куда пропал?
...
Рейтинг: 0 / 0
Как в программе симмитировать нажатие клавиши "End"?
    #32454292
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну хоть кто-то ответьте...
...
Рейтинг: 0 / 0
Как в программе симмитировать нажатие клавиши "End"?
    #32454439
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРаботает, но не так стабильно, как через кнопку: иногда пропадает изображение курсора в поле ввода. Причем фокус расположен правильно - в конце введенного текста, если нажать клавишу, то ввод происходит в "правильное" место, но вот самого знака курсора почему-то нет.
Что-то было такое, как бороться, совсем не помню, пробуй. Можно SendKeys пробовать.

авторИ пришлось добавить св-во Text, иначе программа не видет измененных данных. А зачем процедура "МенятьРекордсет" вызывается 2 раза(в случае нажатия клавиши Enter)?
Правильно, мы запретили акцессу самому обрабатывать Enter, поэтому и не происходит обновления поля как такового.

Можно вообще, кстати, убрать перемещение в конец поля, а просто не разрешать обрабатывать Enter:
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Поле0_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeyReturn And Shift =  0  Then
    МенятьРекордсет
    KeyCode =  0 
  End If
End Sub
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в программе симмитировать нажатие клавиши "End"?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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