Перехват клавиши Tab формой

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Перехват клавиши Tab формой

Сообщение Space » 28.01.2007 (Вс) 8:21

Подскажите, как перехватить Tab формой?

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 28.01.2007 (Вс) 10:13

Если нужно именно ТОЛЬКО когда форма X активна то
Код: Выделить всё

Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
...
If ActiveForm Is X Then
   If GetAsyncKeyState(9) <> 0 Then
       'Здесь попалась клавиша ТАВ
   End If
End If
...


Девятка потому что это код клавиши ТАВ.
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Сообщение Space » 28.01.2007 (Вс) 10:40

этот код в таймер ложить или куда?

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 28.01.2007 (Вс) 10:41

я например положил в таймер (кроме declare естесно)
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.01.2007 (Вс) 11:24

А не проще контролам выставить TabStop=False, и просто обрабатывать _KeyDown?
Изображение

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 28.01.2007 (Вс) 12:30

у меня не ловится даже если на форме вообще нет контролов
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.01.2007 (Вс) 12:44

А у меня ловится. Что делать?
Изображение

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Сообщение Space » 28.01.2007 (Вс) 13:52

Тёмыч, я понимаю, что ты знаешь. Я где-то читал за эту кнопу Tab, то вроде, если форму настроить на приём Tab, то фокус по контролам не будет перемещаться и наооборот - не помню точно, но что-то вроде этого. Так как же? Неуж-то я должен выставить всем контролам TabStop=False, который к тому же ещё и не у всех контролов имеется? И почему так?

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 28.01.2007 (Вс) 17:56

все верно... я ловил на KeyUp.
И, Space, не забудь, что ловить ОТжатие клавиши несколько иначе.
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.01.2007 (Вс) 22:39

Space, потому что если ты хочешь делать по нажатию таба что-то своё, то ты, очевидно, будешь делать это вместо перехода по контролам ;-)

Если же тебе нужно делать что-то в добавок к переходу по контролам, просто допиши свой обработчик им в _GotFocus.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot] и гости: 44

    TopList