|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
Доброго времени суток, скажите, можно ли как-то для элементов управления на форме назначить сочетание клавиш на клавиатуре, по которым эти элементы срабатывали бы? Скажем, есть кнопка на форме. Можно ли назначить ей сочетание клавиш, по которому бы она нажималась? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2015, 20:41 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
Никита Осенний, 11153036 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2015, 21:00 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
Никита ОсеннийСкажем, есть кнопка на форме. Можно ли назначить ей сочетание клавиш, по которому бы она нажималась? Устанавливаете для формы свойство "Перехват нажатия клавиш" (KeyPreview) = Да и в коде формы, в процедуре Form_KeyUp (или Form_KeyDown) анализируете KeyCode и Shift и при нужном их сочетании вызываете свою Кнопка_Click ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2015, 21:09 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
2870, Перехват включил. а как анализировать? автори в коде формы, в процедуре Form_KeyUp (или Form_KeyDown) анализируете KeyCode и Shift и при нужном их сочетании вызываете свою Кнопка_Click ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 15:36 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
Никита ОсеннийПерехват включил. а как анализировать?Примерно так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 15:43 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
__Michelle, авторIf intAltDown And Not intShiftDown And Not intCtrlDown Then если ALT зажата, а Shift и CTRL нет, то... Так а сочетания типа ALT+U, т.е. с буквами как делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 16:04 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
Никита Осенний, начало не там.))) Сначала проверяется значение KeyCode перебором значимых для Вас вариантов в Select Case, в моем примере проверяется, не нажата ли клавиша A (Case vbKeyA), а затем, если нажата клавиша A, проверяется, нажаты/не нажаты ли при этом "модификаторы" Alt, Shift, Ctrl. Код: vbnet 1. 2.
Для буквы U с ALT будет так Код: vbnet 1. 2.
KeyDown, KeyUp Events - Event Procedures To create an event procedure that runs when the KeyDown or KeyUp event occurs, set the OnKeyDown or OnKeyUp property to [Event Procedure], and click the Build button . Syntax Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Private Sub controlname_KeyDown(KeyCode As Integer, Shift As Integer) Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) Private Sub controlname_KeyUp(KeyCode As Integer, Shift As Integer) The KeyDown and KeyUp events have the following arguments. Argument Description controlname The name of the control whose KeyUp or KeyDown event procedure you want to run. KeyCode A key code, such as vbKeyF1 (the F1 key) or vbKeyHome (the HOME key). To specify key codes, use the intrinsic constants shown in the Object Browser. You can prevent an object from receiving a keystroke by setting KeyCode to 0. Shift The state of the SHIFT, CTRL, and ALT keys at the time of the event. If you need to test for the Shift argument, you can use one of the following intrinsic constants as bit masks: Constant Description acShiftMask The bit mask for the SHIFT key. acCtrlMask The bit mask for the CTRL key. acAltMask The bit mask for the ALT key. Remarks You test for a condition by first assigning each result to a temporary integer variable and then comparing the Shift argument to an intrinsic constant. Use the And operator with the Shift argument to test whether the condition is greater than 0, indicating that the SHIFT, CTRL, or ALT key was pressed, as in the following example: ShiftDown = (Shift And acShiftMask) > 0In an event procedure, you can test for any combination of conditions, as in the following example: If ShiftDown And CtrlDown Then . ' Do this if SHIFT and CTRL keys are pressed. . . End IfYou can use the KeyDown and KeyUp event procedures to interpret the uppercase and lowercase version of each character by testing for both the KeyCode argument and the Shift argument. The KeyCode argument indicates the physical key pressed (thus, A and a are considered the same key), and the Shift argument indicates the state of SHIFT+key and returns either A or a. Use the KeyDown and KeyUp event procedures for keyboard handlers if you need to respond to both the pressing and releasing of a key. You can respond to specific keys pressed in a form, regardless of which control has the focus. For example, you may want the key combination CTRL+X to always perform the same action on a form. To make sure a form receives all keyboard events, even those that occur for controls, before they occur for the controls, set the KeyPreview property of the form to Yes. With this property setting, all keyboard events occur first for the form, and then for the control that has the focus. You can respond to specific keystrokes in the form's KeyDown, KeyPress and KeyUp events. You can prevent a control from receiving keystrokes you've responded to, and prevent the keyboard events from occurring for the control, by setting the KeyCode argument to 0 for both the KeyDown and KeyUp events, and setting the KeyAscii argument to 0 for the KeyPress event (if the key is an ANSI key). You must set all three arguments to 0 if you don't want the control to receive the keystrokes. You can use the arguments for the KeyDown, KeyPress, and KeyUp events, in conjunction with the arguments for the MouseDown, MouseUp, and MouseMove events, to make your application work smoothly for both keyboard and mouse users. You can't cancel the KeyDown or KeyUp event. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 16:18 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
Никита Осенний, Вот так обозначаются клавиши Keycode Constants The following constants can be used anywhere in your code in place of the actual values: Constant Value Description vbKeyLButton 0x1 Left mouse button vbKeyRButton 0x2 Right mouse button vbKeyCancel 0x3 CANCEL key vbKeyMButton 0x4 Middle mouse button vbKeyBack 0x8 BACKSPACE key vbKeyTab 0x9 TAB key vbKeyClear 0xC CLEAR key vbKeyReturn 0xD ENTER key vbKeyShift 0x10 SHIFT key vbKeyControl 0x11 CTRL key vbKeyMenu 0x12 MENU key vbKeyPause 0x13 PAUSE key vbKeyCapital 0x14 CAPS LOCK key vbKeyEscape 0x1B ESC key vbKeySpace 0x20 SPACEBAR key vbKeyPageUp 0x21 PAGE UP key vbKeyPageDown 0x22 PAGE DOWN key vbKeyEnd 0x23 END key vbKeyHome 0x24 HOME key vbKeyLeft 0x25 LEFT ARROW key vbKeyUp 0x26 UP ARROW key vbKeyRight 0x27 RIGHT ARROW key vbKeyDown 0x28 DOWN ARROW key vbKeySelect 0x29 SELECT key vbKeyPrint 0x2A PRINT SCREEN key vbKeyExecute 0x2B EXECUTE key vbKeySnapshot 0x2C SNAPSHOT key vbKeyInsert 0x2D INSERT key vbKeyDelete 0x2E DELETE key vbKeyHelp 0x2F HELP key vbKeyNumlock 0x90 NUM LOCK key The A key through the Z key are the same as the ASCII equivalents A – Z: Constant Value Description vbKeyA 65 A key vbKeyB 66 B key vbKeyC 67 C key vbKeyD 68 D key vbKeyE 69 E key vbKeyF 70 F key vbKeyG 71 G key vbKeyH 72 H key vbKeyI 73 I key vbKeyJ 74 J key vbKeyK 75 K key vbKeyL 76 L key vbKeyM 77 M key vbKeyN 78 N key vbKeyO 79 O key vbKeyP 80 P key vbKeyQ 81 Q key vbKeyR 82 R key vbKeyS 83 S key vbKeyT 84 T key vbKeyU 85 U key vbKeyV 86 V key vbKeyW 87 W key vbKeyX 88 X key vbKeyY 89 Y key vbKeyZ 90 Z key The 0 key through 9 key are the same as their ASCII equivalents 0 – 9: Constant Value Description vbKey0 48 0 key vbKey1 49 1 key vbKey2 50 2 key vbKey3 51 3 key vbKey4 52 4 key vbKey5 53 5 key vbKey6 54 6 key vbKey7 55 7 key vbKey8 56 8 key vbKey9 57 9 key The following constants represent keys on the numeric keypad: Constant Value Description vbKeyNumpad0 0x60 0 key vbKeyNumpad1 0x61 1 key vbKeyNumpad2 0x62 2 key vbKeyNumpad3 0x63 3 key vbKeyNumpad4 0x64 4 key vbKeyNumpad5 0x65 5 key vbKeyNumpad6 0x66 6 key vbKeyNumpad7 0x67 7 key vbKeyNumpad8 0x68 8 key vbKeyNumpad9 0x69 9 key vbKeyMultiply 0x6A MULTIPLICATION SIGN (*) key vbKeyAdd 0x6B PLUS SIGN (+) key vbKeySeparator 0x6C ENTER key vbKeySubtract 0x6D MINUS SIGN (–) key vbKeyDecimal 0x6E DECIMAL POINT (.) key vbKeyDivide 0x6F DIVISION SIGN (/) key The following constants represent function keys: Constant Value Description vbKeyF1 0x70 F1 key vbKeyF2 0x71 F2 key vbKeyF3 0x72 F3 key vbKeyF4 0x73 F4 key vbKeyF5 0x74 F5 key vbKeyF6 0x75 F6 key vbKeyF7 0x76 F7 key vbKeyF8 0x77 F8 key vbKeyF9 0x78 F9 key vbKeyF10 0x79 F10 key vbKeyF11 0x7A F11 key vbKeyF12 0x7B F12 key vbKeyF13 0x7C F13 key vbKeyF14 0x7D F14 key vbKeyF15 0x7E F15 key vbKeyF16 0x7F F16 key ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 16:23 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
__Michelle, работает) Спасибо огромное!) Немного не по теме, но может тоже подскажете Хочу горячую клаивушу повестить ещё и на пару кнопок. Можно, конечно, код кнопок скопировать и вставить под условие при нажатии клавиши - это без проблем. Но может можно как-то программно нажать эту кнопку? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 16:43 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
Никита Осеннийможет можно как-то программно нажать эту кнопку?Если в прямом смысле "программно нажать", то Код: vbnet 1. 2.
.Но так делать не надо.))) Можно ведь просто вызвать процедуру обработки события нажатия Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 16:57 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
__Michelle, Спасибо огромное!) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 17:30 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
__Michelle, а как быть, если я хочу получать значение клавиши из таблицы? Например: Код: vbnet 1.
в переменную занесётся буква А (так в таблицу записано). А теперь я хочу эту букву вставить сюда: Код: vbnet 1. 2.
Типа Код: vbnet 1. 2.
Вот только ошибка - Type mismatch Как быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 17:43 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
Никита Осенний, Попробуйте так Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 18:02 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
__Michelle, да, работает. спасибо. а как быть с конструкцией Код: vbnet 1.
Можно ли как-то тут вместо Alt переменную вставить? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 18:10 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
Никита Осеннийа как быть с конструкцией Код: vbnet 1.
Можно ли как-то тут вместо Alt переменную вставить?То есть, хотите сымитировать нажатие Alt? intAltDown это уже переменная. При нажатой клавише Alt intAltDown принимает значение True, в противном случае - False. Вот это и используйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 18:20 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
__Michelle, типа этого? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 18:34 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
Никита Осеннийтипа этого?Нет, конечно. Вы, надеюсь, не планируете использовать модификаторы без основных клавиш? Думаю, нужно программно вызывать функцию Form_KeyDown, передавая ей в качестве первого аргумента Asc(host_key), а в качестве второго аргумента значение, определяемое масками ConstantValue acShiftMask1 acCtrlMask2 acAltMask4 Например, если надо сымитировать нажатие R+Alt+Ctrl Код: vbnet 1.
А в процедуре уже разбирать, как показано здесь 18003955 . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 19:18 |
|
Создание в форме кнопки с быстрым к ней доступом по сочетанию (горячие клавиши)
|
|||
---|---|---|---|
#18+
__Michelle, спасибо!) Сейчас попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2015, 19:45 |
|
|
start [/forum/topic.php?fid=45&fpage=77&tid=1612484]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 336ms |
total: | 463ms |
0 / 0 |