Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сочетание клавиш тройное / 21 сообщений из 21, страница 1 из 1
09.12.2004, 03:11:01
    #32819750
Ukraina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
Возможно ли перехватывать тройное нажатие клавиш, типа ALT+J+R?
Это необходимо вставить в код

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If Chr(KeyCode) = "Y" And ((Shift And acAltMask) > 0) Then
KeyCode = 0
[Кнопка85].Visible = True
[Кнопка86].Visible = True

End If
If Chr(KeyCode) = "N" And ((Shift And acAltMask) > 0) Then
KeyCode = 0
[Кнопка85].Visible = False
[Кнопка86].Visible = False
End If

Т.е. необъодимо добиться вывода на экран кнопок только при нажатии ALT+Y+K?



Жизнь не перестает меня удивлять!!!
...
Рейтинг: 0 / 0
09.12.2004, 08:32:20
    #32819836
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
У юзера пальцы не скрючит ? :)
...
Рейтинг: 0 / 0
10.12.2004, 08:03:29
    #32822176
Ukraina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
Не-а, я не про юзера беспокоюся, а о сэбэ. С помощью этого сочетания я хочу скрывать кнопочку, где у меня есть настройки кое-какие, которые юзеру ну совсем не надо знати...
Ну так возможно али нет?
Жизнь не перестает меня удивлять!!!
...
Рейтинг: 0 / 0
10.12.2004, 08:33:31
    #32822195
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
Может тогда проще отслеживать две последовательные комбинации

ALT-J , ALT-R
ну еще флаг при ALT-J взводить,
а если после идет не ALT-R сбрасывать,
а реагировать на ALT-R только при взведенном флаге
...
Рейтинг: 0 / 0
10.12.2004, 16:25:42
    #32823707
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
На KeyDown можно отследить любые комбинации клавишь. Для каждой нужной клавиши свой флажок. down -> true, up -> false и когда все в true, значит вот оно, мгновение...
...
Рейтинг: 0 / 0
10.12.2004, 16:47:11
    #32823776
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
А может не заморачиваться со сложной комбинацией? сделать простую в Autokeys , а кнопочку засчвечивать только если текущий юзер(при любой схеме авторизации) имеет права на эту кнопочку?
...
Рейтинг: 0 / 0
10.12.2004, 16:54:10
    #32823802
_Wolf_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
Alexey ShА может не заморачиваться со сложной комбинацией? сделать простую в Autokeys , а кнопочку засчвечивать только если текущий юзер(при любой схеме авторизации) имеет права на эту кнопочку?

А если нету разграничения на пользователей? :)
...
Рейтинг: 0 / 0
10.12.2004, 16:57:06
    #32823811
lobodava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
Кстати, можно отслеживать одновременное нажатие клавиш Alt, Shift и Ctrl.
...
Рейтинг: 0 / 0
10.12.2004, 17:01:18
    #32823824
lobodava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
Рано запостил :) Продолжаем:

... и ещё одну буковку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub tbo_KeyDown(KeyCode As Integer, Shift As Integer)
Dim intKeyDown As Integer

intKeyDown = (Shift And acCtrlMask) >  0  And (Shift And acShiftMask) >  0  And (Shift And acAltMask) >  0 

If intKeyDown And KeyCode = vbKeySpace Then
....
End If
End Sub
...
Рейтинг: 0 / 0
10.12.2004, 17:03:30
    #32823837
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
_Wolf_ Alexey ShА может не заморачиваться со сложной комбинацией? сделать простую в Autokeys , а кнопочку засчвечивать только если текущий юзер(при любой схеме авторизации) имеет права на эту кнопочку?

А если нету разграничения на пользователей? :)

Схема авторизации может быть любой, например можно проверять доменные права пользователя.
...
Рейтинг: 0 / 0
10.12.2004, 17:29:54
    #32823922
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
lobodavaintKeyDown = (Shift And acCtrlMask) > 0 And (Shift And acShiftMask) > 0 And (Shift And acAltMask) > 0
intKeyDown = (Shift And acCtrlMask + acShiftMask + acAltMask) > 0
...
Рейтинг: 0 / 0
10.12.2004, 20:19:18
    #32824217
Ukraina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
Люди спасибо!!!
Но вот только у меня получилось сочетание Ctrl+Alt+Y (например), а все-таки возможно ли сочетание Ctrl+Alt+Y+N (например), т.е. сочетание с двумя и более буквами. имено буквами?

И еще, может ли мне кто-нибудь объяснить принцип работы функции Form_KeyDown(KeyCode As Integer, Shift As Integer), а имено смысл "Shift"
Перевернул Хелп и не смог найти даже документацию по acAltMask,acShiftMask,acCtrlMask. Есть ли другие такие "ас..."?

Жизнь не перестает меня удивлять!!!
...
Рейтинг: 0 / 0
11.12.2004, 00:45:37
    #32824355
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
UkrainaИ еще, может ли мне кто-нибудь объяснить принцип работы функции Form_KeyDown(KeyCode As Integer, Shift As Integer), а имено смысл "Shift"
Перевернул Хелп и не смог найти даже документацию по acAltMask,acShiftMask,acCtrlMask. Есть ли другие такие "ас..."?
На клавиатуре есть всего 3 таких клавиши (правая-левая вроде не различаются). Каждая из них имеет свой код - коды обозначены этими тремя константами, значения которых 1, 2 и 4. При входе в функцию параметр Shift равен сумме кодов тех из 3 клавиш, которые нажаты. По этой сумме всегда можно определить, какие нажаты, а какие нет, поскольку каждое из 3 слагаемых представляет собой отдельный бит.
...
Рейтинг: 0 / 0
11.12.2004, 01:16:43
    #32824361
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
UkrainaНо вот только у меня получилось сочетание Ctrl+Alt+Y (например), а все-таки возможно ли сочетание Ctrl+Alt+Y+N (например), т.е. сочетание с двумя и более буквами. имено буквами?
Ты хочешь нажимать две буквы одновременно или по очереди?
...
Рейтинг: 0 / 0
11.12.2004, 01:43:28
    #32824373
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
Владимир Саныч UkrainaНо вот только у меня получилось сочетание Ctrl+Alt+Y (например), а все-таки возможно ли сочетание Ctrl+Alt+Y+N (например), т.е. сочетание с двумя и более буквами. имено буквами?
Ты хочешь нажимать две буквы одновременно или по очереди?
хм, Саныч, а как отличить одновременно от по очереди, если написано
Ctrl+Alt+Y+N а не Ctrl+Alt+N+Y ?
...
Рейтинг: 0 / 0
11.12.2004, 01:48:50
    #32824377
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
Victoshaхм, Саныч, а как отличить одновременно от по очереди, если написано
Ctrl+Alt+Y+N а не Ctrl+Alt+N+Y ?
Если одновременно, то эти две записи эквивалентны. Если нет, то соответственно.
...
Рейтинг: 0 / 0
11.12.2004, 02:05:37
    #32824382
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
Владимир Саныч Victoshaхм, Саныч, а как отличить одновременно от по очереди, если написано
Ctrl+Alt+Y+N а не Ctrl+Alt+N+Y ?
Если одновременно, то эти две записи эквивалентны. Если нет, то соответственно.

Ctrl и Alt - модификаторы кодов клавиатуры.
Это дает утроенный набор кодов на одном и том же множестве клавиш.
А как нажать одновременно N и Y я не знаю.
В нормальном случае кто-то из них окажется первым, кто-то вторым.
В ненормальном - клавиатура зависнет.

Так мне думается пока, что комбинации типа N+Y на "нормальных" клавишах
могут быть только последовательными. В этом смысле N+Y и Y+N
разные комбинации.
Не различить их можно программно, методом определения попадания в строку.

....
так мне каатца...
...
Рейтинг: 0 / 0
11.12.2004, 02:15:41
    #32824383
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
до четырех считать не умею. это воодушевляет.


(с выражением лица)
...
Рейтинг: 0 / 0
11.12.2004, 03:43:47
    #32824394
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
со счетом совсем беда.
а код такой получился.
(не соображу, как обукрасить)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Const cShiftMask =  6   'acAltMAsk+acCtrlMask
    Const CstrCombination As String = "KY"
    
    Static lngMagic As Long
          
    If Shift = cShiftMask Then
      Dim tPos As Integer
      tPos = InStr( 1 , CstrCombination, ChrW(KeyCode), vbBinaryCompare)     
    
      If tPos >  0  Then
        lngMagic = setBit(lngMagic, tPos)                

        If ((lngMagic And  6 &) =  6 &) Then
           MsgBox "Нажата комбинация Ctrl-Alt-K-Y"
           lngMagic =  0 &           
        End If

      Else
        lngMagic =  0 &
      End If
    Else
      lngMagic =  0 &
    End If
    
End Sub

SetBit живет в отдельном модуле. Если правильно помню - взят у Гетса.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
Option Compare Binary
Option Explicit

Private aPower2( 0  To  31 ) As Long ' массив степеней двойки

Function setBit(ByVal lngValue As Long, iBitPos As Integer) As Long
  setBit = (lngValue Or Power2(iBitPos))
End Function

Property Get Power2(ByVal i As Integer) As Long
  If aPower2( 0 ) =  0  Then
    Call initPower
  End If
    Power2 = aPower2(i)
End Property

Private Sub initPower()
    aPower2( 0 ) = &H1&
    aPower2( 1 ) = &H2&
    aPower2( 2 ) = &H4&
    aPower2( 3 ) = &H8&
    aPower2( 4 ) = &H10&
    aPower2( 5 ) = &H20&
    aPower2( 6 ) = &H40&
    aPower2( 7 ) = &H80&
    aPower2( 8 ) = &H100&
    aPower2( 9 ) = &H200&
    aPower2( 10 ) = &H400&
    aPower2( 11 ) = &H800&
    aPower2( 12 ) = &H1000&
    aPower2( 13 ) = &H2000&
    aPower2( 14 ) = &H4000&
    aPower2( 15 ) = &H8000&
    aPower2( 16 ) = &H10000
    aPower2( 17 ) = &H20000
    aPower2( 18 ) = &H40000
    aPower2( 19 ) = &H80000
    aPower2( 20 ) = &H100000
    aPower2( 21 ) = &H200000
    aPower2( 22 ) = &H400000
    aPower2( 23 ) = &H800000
    aPower2( 24 ) = &H1000000
    aPower2( 25 ) = &H2000000
    aPower2( 26 ) = &H4000000
    aPower2( 27 ) = &H8000000
    aPower2( 28 ) = &H10000000
    aPower2( 29 ) = &H20000000
    aPower2( 30 ) = &H40000000
    aPower2( 31 ) = &H80000000
End Sub
(с выражением лица)
...
Рейтинг: 0 / 0
11.12.2004, 14:31:31
    #32824500
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
нехорошо это - последвательности не различать.

(с выражением лица)
...
Рейтинг: 0 / 0
11.12.2004, 15:11:24
    #32824510
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сочетание клавиш тройное
VictoshaА как нажать одновременно N и Y я не знаю.
В нормальном случае кто-то из них окажется первым, кто-то вторым.
В ненормальном - клавиатура зависнет.
Понял, согласен.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сочетание клавиш тройное / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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