10 / 10 / 2
Регистрация: 03.04.2010
Сообщений: 160
1

KeyDown

27.05.2010, 11:42. Показов 26314. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как на form сделать нажимаешь LCONTROL + D =и чета там, ато везде показывают как CTRL + F1..12 OR 1..0 а С бУКВАМИ НЕ НАШЕЛ КАК СДЕЛАТЬ !)?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2010, 11:42
Ответы с готовыми решениями:

keydown
procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if...

Не срабатывает KeyDown
Доброго времени суток господа программеры :) Написал я одну процедуру в ней есть переменная х,...

Keydown, keyup и keypress
Доброго времени суток, столкнулся с проблемой. Передвигаю элементы матрицы с помощью (keydown), по...

Чем отличаются события формы KeyPress, KeyDown и KeyUp
Решил написать игру на Delphi... Подскажите, кто может: 1. Чем отличаются события формы...

16
3310 / 1372 / 110
Регистрация: 28.04.2009
Сообщений: 4,822
27.05.2010, 11:46 2
несного не понял, вы хотите "горячую клавишу сделать" lctrl+d или чтобы подсказка появлялась ctrl+D ?
0
192 / 173 / 37
Регистрация: 19.01.2010
Сообщений: 610
Записей в блоге: 1
27.05.2010, 12:03 3
Цитата Сообщение от CrossExE Посмотреть сообщение
Как на form сделать нажимаешь LCONTROL + D =и чета там, ато везде показывают как CTRL + F1..12 OR 1..0 а С бУКВАМИ НЕ НАШЕЛ КАК СДЕЛАТЬ !)?
Вот горячая клавиша lCTRL+D:

Delphi
1
2
3
  
If (ssCtrl in Shift) and (Key=68) Then
    Showmessage('Hallo');
1
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
27.05.2010, 12:29 4
Цитата Сообщение от leejack Посмотреть сообщение
If (ssCtrl in Shift) and (Key=68) Then
а как delete обозначается? И он где находится в Shift или в Key?
0
10 / 10 / 2
Регистрация: 03.04.2010
Сообщений: 160
27.05.2010, 12:31  [ТС] 5
Цитата Сообщение от anonimus Посмотреть сообщение
а как delete обозначается? И он где находится в Shift или в Key?
Вроде 47 или 48 ! или vk_Delete = $2E;
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
27.05.2010, 12:50 6
Цитата Сообщение от CrossExE Посмотреть сообщение
Вроде 47 или 48 ! или vk_Delete = $2E;
наличие в Key проверять?
0
192 / 173 / 37
Регистрация: 19.01.2010
Сообщений: 610
Записей в блоге: 1
27.05.2010, 12:51 7
Цитата Сообщение от anonimus Посмотреть сообщение
а как delete обозначается? И он где находится в Shift или в Key?
Находится в key
Delete: key=46 или key=VK_Delete
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
27.05.2010, 12:54 8
Лучший ответ Сообщение было отмечено как решение

Решение

Список виртуальных кодов:
Delphi
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
Virtual Key Code    Corresponding key
 
VK_LBUTTON  Left mouse button
VK_RBUTTON  Right mouse button
VK_CANCEL   Control+Break
VK_MBUTTON  Middle mouse button
VK_BACK Backspace key
VK_TAB  Tab key
VK_CLEAR    Clear key
VK_RETURN   Enter key
VK_SHIFT    Shift key
VK_CONTROL  Ctrl key
VK_MENU Alt key
VK_PAUSE    Pause key
VK_CAPITAL  Caps Lock key
VK_KANA Used with IME
VK_HANGUL   Used with IME
VK_JUNJA    Used with IME
VK_FINAL    Used with IME
VK_HANJA    Used with IME
VK_KANJI    Used with IME
VK_CONVERT  Used with IME
 
VK_NONCONVERT   Used with IME
VK_ACCEPT   Used with IME
VK_MODECHANGE   Used with IME
VK_ESCAPE   Esc key
VK_SPACE    Space bar
VK_PRIOR    Page Up key
VK_NEXT Page Down key
VK_END  End key
VK_HOME Home key
VK_LEFT Left Arrow key
VK_UP   Up Arrow key
VK_RIGHT    Right Arrow key
VK_DOWN Down Arrow key
VK_SELECT   Select key
VK_PRINT    Print key (keyboard-specific)
VK_EXECUTE  Execute key
VK_SNAPSHOT Print Screen key
VK_INSERT   Insert key
VK_DELETE   Delete key
VK_HELP Help key
 
VK_LWIN Left Windows key (Microsoft keyboard)
VK_RWIN Right Windows key (Microsoft keyboard)
VK_APPS Applications key (Microsoft keyboard)
VK_NUMPAD0  0 key (numeric keypad)
VK_NUMPAD1  1 key (numeric keypad)
VK_NUMPAD2  2 key (numeric keypad)
VK_NUMPAD3  3 key (numeric keypad)
VK_NUMPAD4  4 key (numeric keypad)
VK_NUMPAD5  5 key (numeric keypad)
VK_NUMPAD6  6 key (numeric keypad)
VK_NUMPAD7  7 key (numeric keypad)
VK_NUMPAD8  8 key (numeric keypad)
VK_NUMPAD9  9 key (numeric keypad)
 
VK_MULTIPLY Multiply key (numeric keypad)
VK_ADD  Add key (numeric keypad)
VK_SEPARATOR    Separator key (numeric keypad)
VK_SUBTRACT Subtract key (numeric keypad)
VK_DECIMAL  Decimal key (numeric keypad)
VK_DIVIDE   Divide key (numeric keypad)
VK_F1   F1 key
VK_F2   F2 key
VK_F3   F3 key
VK_F4   F4 key
VK_F5   F5 key
VK_F6   F6 key
VK_F7   F7 key
VK_F8   F8 key
VK_F9   F9 key
VK_F10  F10 key
VK_F11  F11 key
VK_F12  F12 key
VK_F13  F13 key
VK_F14  F14 key
VK_F15  F15 key
 
VK_F16  F16 key
VK_F17  F17 key
VK_F18  F18 key
VK_F19  F19 key
VK_F20  F20 key
VK_F21  F21 key
VK_F22  F22 key
VK_F23  F23 key
VK_F24  F24 key
VK_NUMLOCK  Num Lock key
VK_SCROLL   Scroll Lock key
VK_LSHIFT   Left Shift key (only used with GetAsyncKeyState and GetKeyState)
VK_RSHIFT   Right Shift key (only used with GetAsyncKeyState and GetKeyState)
VK_LCONTROL Left Ctrl key (only used with GetAsyncKeyState and GetKeyState)
VK_RCONTROL Right Ctrl key (only used with GetAsyncKeyState and GetKeyState)
 
VK_LMENU    Left Alt key (only used with GetAsyncKeyState and GetKeyState)
VK_RMENU    Right Alt key (only used with GetAsyncKeyState and GetKeyState)
VK_PROCESSKEY   Process key
VK_ATTN Attn key
VK_CRSEL    CrSel key
VK_EXSEL    ExSel key
VK_EREOF    Erase EOF key
VK_PLAY Play key
VK_ZOOM Zoom key
VK_NONAME   Reserved for future use
VK_PA1  PA1 key
VK_OEM_CLEAR    Clear key
Эти коды передаются через параметр Key в обработчиках событий OnKeyDown, OnKeyUp, OnMouseDown, OnMouseUp.
Через параметр Shift в этих же обработчиках передаётся одно из следующих значений:
ssShift - нажата клавиша Shift,
ssAlt - нажата клавиша Alt,
ssCtrl - нажата клавиша Ctrl,
ssLeft - нажата левая кнопка мыши,
ssRight - нажата правая кнопка мыши,
ssMiddle - нажата средняя кнопка мыши,
ssDouble - выполнен двойной щелчёк кнопкой мыши (наверное имеется в виду левая кнопка).
8
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
27.05.2010, 12:57 9
Спасибо ))
поставлю в закладки )
0
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 8
23.01.2011, 23:19 10
а кнока виндовс это VK_LWIN и VK_RWIN?
мне нада что бы при их нажатии ничего непроисходило
Delphi
1
if ((key=VK_LWIN) or (key=VK_RWIN)) then key:=0;
правильно?

Добавлено через 2 часа 35 минут
подскажите кто нить!
UP!
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
24.01.2011, 00:25 11
Само по себе приложение и так не реагирует на эту клавишу, если в явном виде не добавлен код реакции. Чтобы на эти клавиши не реагировала оболочка Windows, понадобится повесить хук, который будет гасить скан-код этой клавиши.
Как создать хук.
В этой же статье на второй странице - перехват событий клавиатуры и определение скан-кода.
1
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 8
24.01.2011, 01:16 12
спасибо)
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
24.01.2011, 10:01 13
так ты не заблокируешь кнопку пуск
0
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
09.08.2011, 15:16 14
Цитата Сообщение от Mawrat Посмотреть сообщение
Список виртуальных кодов:
Delphi
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
Virtual Key Code    Corresponding key
 
VK_LBUTTON  Left mouse button
VK_RBUTTON  Right mouse button
VK_CANCEL   Control+Break
VK_MBUTTON  Middle mouse button
VK_BACK Backspace key
VK_TAB  Tab key
VK_CLEAR    Clear key
VK_RETURN   Enter key
VK_SHIFT    Shift key
VK_CONTROL  Ctrl key
VK_MENU Alt key
VK_PAUSE    Pause key
VK_CAPITAL  Caps Lock key
VK_KANA Used with IME
VK_HANGUL   Used with IME
VK_JUNJA    Used with IME
VK_FINAL    Used with IME
VK_HANJA    Used with IME
VK_KANJI    Used with IME
VK_CONVERT  Used with IME
 
VK_NONCONVERT   Used with IME
VK_ACCEPT   Used with IME
VK_MODECHANGE   Used with IME
VK_ESCAPE   Esc key
VK_SPACE    Space bar
VK_PRIOR    Page Up key
VK_NEXT Page Down key
VK_END  End key
VK_HOME Home key
VK_LEFT Left Arrow key
VK_UP   Up Arrow key
VK_RIGHT    Right Arrow key
VK_DOWN Down Arrow key
VK_SELECT   Select key
VK_PRINT    Print key (keyboard-specific)
VK_EXECUTE  Execute key
VK_SNAPSHOT Print Screen key
VK_INSERT   Insert key
VK_DELETE   Delete key
VK_HELP Help key
 
VK_LWIN Left Windows key (Microsoft keyboard)
VK_RWIN Right Windows key (Microsoft keyboard)
VK_APPS Applications key (Microsoft keyboard)
VK_NUMPAD0  0 key (numeric keypad)
VK_NUMPAD1  1 key (numeric keypad)
VK_NUMPAD2  2 key (numeric keypad)
VK_NUMPAD3  3 key (numeric keypad)
VK_NUMPAD4  4 key (numeric keypad)
VK_NUMPAD5  5 key (numeric keypad)
VK_NUMPAD6  6 key (numeric keypad)
VK_NUMPAD7  7 key (numeric keypad)
VK_NUMPAD8  8 key (numeric keypad)
VK_NUMPAD9  9 key (numeric keypad)
 
VK_MULTIPLY Multiply key (numeric keypad)
VK_ADD  Add key (numeric keypad)
VK_SEPARATOR    Separator key (numeric keypad)
VK_SUBTRACT Subtract key (numeric keypad)
VK_DECIMAL  Decimal key (numeric keypad)
VK_DIVIDE   Divide key (numeric keypad)
VK_F1   F1 key
VK_F2   F2 key
VK_F3   F3 key
VK_F4   F4 key
VK_F5   F5 key
VK_F6   F6 key
VK_F7   F7 key
VK_F8   F8 key
VK_F9   F9 key
VK_F10  F10 key
VK_F11  F11 key
VK_F12  F12 key
VK_F13  F13 key
VK_F14  F14 key
VK_F15  F15 key
 
VK_F16  F16 key
VK_F17  F17 key
VK_F18  F18 key
VK_F19  F19 key
VK_F20  F20 key
VK_F21  F21 key
VK_F22  F22 key
VK_F23  F23 key
VK_F24  F24 key
VK_NUMLOCK  Num Lock key
VK_SCROLL   Scroll Lock key
VK_LSHIFT   Left Shift key (only used with GetAsyncKeyState and GetKeyState)
VK_RSHIFT   Right Shift key (only used with GetAsyncKeyState and GetKeyState)
VK_LCONTROL Left Ctrl key (only used with GetAsyncKeyState and GetKeyState)
VK_RCONTROL Right Ctrl key (only used with GetAsyncKeyState and GetKeyState)
 
VK_LMENU    Left Alt key (only used with GetAsyncKeyState and GetKeyState)
VK_RMENU    Right Alt key (only used with GetAsyncKeyState and GetKeyState)
VK_PROCESSKEY   Process key
VK_ATTN Attn key
VK_CRSEL    CrSel key
VK_EXSEL    ExSel key
VK_EREOF    Erase EOF key
VK_PLAY Play key
VK_ZOOM Zoom key
VK_NONAME   Reserved for future use
VK_PA1  PA1 key
VK_OEM_CLEAR    Clear key
Эти коды передаются через параметр Key в обработчиках событий OnKeyDown, OnKeyUp, OnMouseDown, OnMouseUp.
Через параметр Shift в этих же обработчиках передаётся одно из следующих значений:
ssShift - нажата клавиша Shift,
ssAlt - нажата клавиша Alt,
ssCtrl - нажата клавиша Ctrl,
ssLeft - нажата левая кнопка мыши,
ssRight - нажата правая кнопка мыши,
ssMiddle - нажата средняя кнопка мыши,
ssDouble - выполнен двойной щелчёк кнопкой мыши (наверное имеется в виду левая кнопка).
А что вот тут не так?
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.btn1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var w:Word;
begin
  if(ssRight in Shift)then
           w:=1
  else
           w:=5;
end;
Получается вообще чёртечто! Не выполняется ни IF, ни ELSE. Ни на правую, ни на левую клавиши. Заход в процедуру есть, но сразу с ифа идёт на конец.
А если так:
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.btn1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var w:Word;
begin
  w:=$ffff;
  if(ssRight in Shift)then
           w:=1
  else
           w:=5;
end;
, то вообще в процедуру не попадаю.
И ещё вдогонку вопрос: Странно, зачем нужно событие OnClick, если есть OnMouseDown. Тем более, что если используется OnMouseDown, то OnClick уже никогда не случится.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
09.08.2011, 16:48 15
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
А что вот тут не так?
Delphi
1
2
3
4
5
6
7
8
9
 procedure TForm1.btn1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var w:Word;
begin
 if(ssRight in Shift)then
 w:=1
 else
 w:=5;
end;
Получается вообще чёртечто! Не выполняется ни IF, ни ELSE. Ни на правую, ни на левую клавиши. Заход в процедуру есть, но сразу с ифа идёт на конец.
Уменя все отлично срабатывает
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  w: Word;
begin
  if (ssRight in Shift) then
    w := 1
else
  w := 5;
showmessage(inttostr(w));
end;
0
Житель Земли
3002 / 3004 / 391
Регистрация: 26.07.2011
Сообщений: 11,463
Записей в блоге: 1
09.08.2011, 17:10 16
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
А что вот тут не так?
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.btn1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var w:Word;
begin
  if(ssRight in Shift)then
           w:=1
  else
           w:=5;
end;
Получается вообще чёртечто! Не выполняется ни IF, ни ELSE. Ни на правую, ни на левую клавиши. Заход в процедуру есть, но сразу с ифа идёт на конец.
то вообще в процедуру не попадаю.
нужно так

Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.btn1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var w:Word;
begin
  if Button = mbRight then
           w:=1
  else
           w:=5;
end;
в Shift попадает состояние клавиш Ctrl, Alt, Shift
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
09.08.2011, 17:53 17
Цитата Сообщение от DenNik Посмотреть сообщение
в Shift попадает состояние клавиш Ctrl, Alt, Shift
И не только...
KeyDown
0
09.08.2011, 17:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.08.2011, 17:53
Помогаю со студенческими работами здесь

Имитация события MouseDown из события KeyDown
Нужно эмитировать событие MouseDown из события KeyDown. и событие MouseUp из события KeyUp. Чтобы...

KeyDown
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i:integer;...

Delphi 7. Keydown и Label
Помогите создать программу , которая будет содержать в себе 5 labela. При запуске этой программы...

Создание процедур типа MouseDown, KeyDown, KeyPress
Как создать процедуры типа MouseDown, KeyDown, KeyPress и т.д. и т.п.?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru