Страница: 1 |
Страница: 1 |
Вопрос: Обработка нажатия Tab
Добавлено: 15.12.09 00:02
Автор вопроса: Zahar | Web-сайт:
У меня на форме есть TextBox. Мн необходимо отловить нажатие пользователем на клавишу Tab.
По непонятным мне причинам событие нажатия на эту клавишу в Text1_KeyPress, Text1_KeyDown не ловится. На этом форуме нашёл решение проблемы - отключить TabStop во всех контролах на форме. После этого событие нажатия на эту нужную клавишу начинает ловиться. Код таков:
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). Что делать? Помогите.
P.S. Решения по типу: отключить звук в колонках, купить бирюльки или не обращать на это внимание - просьба не предлагать!
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 15.12.09 09:11
Это надо выполнить ВСЕГО ОДИН раз. При загрузке формы.
Номер ответа: 2
Автор ответа:
Zahar
Вопросов: 91
Ответов: 67
Web-сайт:
Профиль | | #2
Добавлено: 15.12.09 10:15
Я не уточнил, что ловить клавишу Tab мне надо только в текстбоксах, причём определённых, поэтому и отключать TabStop требуется на время. Но суть не в этом и вопрос не о том. Как отключить BEEP при нажатии на эту клавишу: хоть один раз отключай табстопы, хоть десять - всё равно сигнал звучит.
Номер ответа: 3
Автор ответа:
VerhoLom
Вопросов: 20
Ответов: 285
Профиль | | #3
Добавлено: 17.12.09 13:02
Ставьте локальный клавиатурный хук, например. В сети полно информации на эту тему...
Номер ответа: 4
Автор ответа:
Zahar
Вопросов: 91
Ответов: 67
Web-сайт:
Профиль | | #4
Добавлено: 17.12.09 14:53
Я уже нашёл ответ - всё до безобразия просто. Надо просто при обработке события нажатия клавиши проставить keycode=0.
И всё
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 17.12.09 17:27
блин) сам подобное использую. что-то стормозил
Номер ответа: 6
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #6
Добавлено: 17.12.09 22:50
Афигеть)))) Прикольные у вас танцы с бубном вокруг трупа VB6 ))) Жжоте, пешите исчо!
Номер ответа: 7
Автор ответа:
Zahar
Вопросов: 91
Ответов: 67
Web-сайт:
Профиль | | #7
Добавлено: 17.12.09 23:08
Интересно? Что хотел сказать этим Этот Великий Гуру? Может быть, насколько Он крут? Так никто с этим и не спорил, во всяком случае в этой теме. Но чтоб Ему стало легче, давайте Ему поапплодируем стоя...
---===звучат длительные апплодисменты, переходящие в бурные авации===---
Номер ответа: 8
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #8
Добавлено: 18.12.09 01:44
EROS, давай я тебе лучше расскажу про более крутые вещи которые можно делать с трупами)
Захучил я мышь и клаву. Долго радовался, и неожиданно осознал, что если прога делает что-то длительное, то не может обрабатывать хуки и всё подвисает включая курсор. Долго ли, коротко ли, но вчера я сделал многопоточность и теперь всё охрененно стало. Но ведь известно, что мультитрединг+vb6=пустое_множество. Поэтому я выделил хуки в отдельную программу, которая отсылает основной проге сообщения через PostMessage. Вот так вот.
Номер ответа: 9
Автор ответа:
VerhoLom
Вопросов: 20
Ответов: 285
Профиль | | #9
Добавлено: 18.12.09 14:25
Winand
Поддерживаю!