Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка нажатия Tab, как словить это событие? 
:(
    Опции темы
swetik1981
Дата 15.12.2009, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Автор вопроса:  Zahar | Web-сайт: partnerka-ru.info  
У меня на форме есть TextBox. Мн необходимо отловить нажатие пользователем на клавишу Tab. 
По непонятным мне причинам событие нажатия на эту клавишу в Text1_KeyPress, Text1_KeyDown не ловится. На этом форуме нашёл решение проблемы - отключить TabStop во всех контролах на форме. После этого событие нажатия на эту нужную клавишу начинает ловиться. Код таков: 


Код

Private Sub Text1_GotFocus() 
For Each Control In Me.Controls 
    Control.TabStop = False 
Next Control 
End Sub 
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) 
If KeyCode = vbKeyShift Then 
    For Each Control In Me.Controls 
        Control.TabStop = True 
    Next Control 
End If 
End Sub 
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) 
If KeyCode = vbKeyShift Then 
    For Each Control In Me.Controls 
        Control.TabStop = False 
    Next Control 
End If 
End Sub 
Private Sub Text1_LostFocus() 
For Each Control In Me.Controls 
    Control.TabStop = True 
Next Control 
End Sub



В принципе всё меня устраивает в этом решении вопроса, кроме одного: При каждом нажатии клавиши компьютер пикает (подаёт звуковой сигнал аналогичный BEEP). Что делать? Помогите.  

PM MAIL   Вверх
admsasha
Дата 15.12.2009, 04:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: 1
Всего: 6



Что-то слишком сложно )

tab не поймаешь, т.к. обрабатывается на уровне системы, это надо системный хук ставить. За точность не ручаюсь, но примерно так.


Тут колонок нет, про beep незнаю, но попробуй так. 
Код

Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyTab Or KeyAscii = vbKeyReturn Then
        Text2.SetFocus
    End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyTab Or KeyAscii = vbKeyReturn Then
        Text1.SetFocus
    End If
End Sub


Естественно tabstop у всех надо выключить.
PM MAIL WWW ICQ Jabber   Вверх
swetik1981
Дата 15.12.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Не решает это проблемы. Beep как бипал, так и бипает...
PM MAIL   Вверх
Akina
Дата 15.12.2009, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Q277916
HOWTO: Use GetKeyState() to Check If the TAB Key Was Pressed 






--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.