powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сочетание клавиш тройное
21 сообщений из 21, страница 1 из 1
Сочетание клавиш тройное
    #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
Сочетание клавиш тройное
    #32819836
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У юзера пальцы не скрючит ? :)
...
Рейтинг: 0 / 0
Сочетание клавиш тройное
    #32822176
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не-а, я не про юзера беспокоюся, а о сэбэ. С помощью этого сочетания я хочу скрывать кнопочку, где у меня есть настройки кое-какие, которые юзеру ну совсем не надо знати...
Ну так возможно али нет?
Жизнь не перестает меня удивлять!!!
...
Рейтинг: 0 / 0
Сочетание клавиш тройное
    #32822195
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может тогда проще отслеживать две последовательные комбинации

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

А если нету разграничения на пользователей? :)
...
Рейтинг: 0 / 0
Сочетание клавиш тройное
    #32823811
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, можно отслеживать одновременное нажатие клавиш Alt, Shift и Ctrl.
...
Рейтинг: 0 / 0
Сочетание клавиш тройное
    #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
Сочетание клавиш тройное
    #32823837
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Wolf_ Alexey ShА может не заморачиваться со сложной комбинацией? сделать простую в Autokeys , а кнопочку засчвечивать только если текущий юзер(при любой схеме авторизации) имеет права на эту кнопочку?

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

Схема авторизации может быть любой, например можно проверять доменные права пользователя.
...
Рейтинг: 0 / 0
Сочетание клавиш тройное
    #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
Сочетание клавиш тройное
    #32824217
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди спасибо!!!
Но вот только у меня получилось сочетание Ctrl+Alt+Y (например), а все-таки возможно ли сочетание Ctrl+Alt+Y+N (например), т.е. сочетание с двумя и более буквами. имено буквами?

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

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

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

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

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


(с выражением лица)
...
Рейтинг: 0 / 0
Сочетание клавиш тройное
    #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
Сочетание клавиш тройное
    #32824500
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нехорошо это - последвательности не различать.

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


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