![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Коды клавиш. [D7, XP]
Alral © (2006-08-17 21:32:00)На сколько мне известно, у клавиш как пробел, enter и т.п., а так же вроде и у букв в Delphi есть коды(#n, n-номер). Где их можно найти. Меня в данном случае интересует пробел(как можно определить
нажатие пробела например в OnKeyPress if Key=#код нажатия на пробел then...), но хорошо бы и знать другие коды. Где их можно найти?
Gydvin (2006-08-21 13:55:00) [21]в [14] показано, как уотловить нажатие клавиши вместе с контролом
novill (2006-08-21 12:57:00) [22]Никакого бардака.
В keydown'е код нажатой клавише, в keypress'е символ, если конечно это символ.
Символ зависит еще и от текущего языка, статуса shift и capslock. Естесственно его не может быть в keydown.
Галинка (2006-08-21 12:31:00) [23]Короче... бардак... а как сама среда их распознает? Может поэтому их внешне и нельзя распознать, чтобы особо умные не переопределяли?
DprYg (2006-08-21 09:43:00) [24]Вот просто немного для справки. Может быть, поможет кому-нибудь разобраться. В OnKeyDown можно распознать нажатые клавиши(вкл. функциональные и кнопки мыши), но нельзя распознать символ. В OnKeyPress можно распознать нажатую клавишу символа, сам символ, но нельзя функциональные клавиши. Shift+символ - OnKeyPress наступает и все ок. Alt+символ - OnKeyPress не наступает. Ctrl+символ - OnKeyPress наступает, но указывает на неверный символ.
Gydvin (2006-08-21 07:11:00) [25]> вместе с шифтом или контролом или альтом?
if (ssCtrl in Shift) and (key=...........) then...........
Галинка (2006-08-21 01:51:00) [26]Еще раз... Что я должна видеть? Ну, например, набираю я шоткат Alt+E (обычно выход из программы). Какой код будет сгененрирован?
ffo (2006-08-20 19:51:00) [27]
> Коды клавиш
case Key of
VK_CANCEL: tempstr := 'CANCEL';
VK_BACK: tempstr := 'BACKSPACE';
VK_TAB: tempstr := 'TAB';
VK_CLEAR: tempstr := 'CLEAR';
VK_RETURN: tempstr := 'ENTER';
VK_PAUSE: tempstr := 'PAUSE';
VK_CAPITAL: tempstr := 'CAPS LOCK';
VK_ESCAPE: tempstr := 'ESC';
VK_SPACE: tempstr := 'SPACEBAR';
VK_PRIOR: tempstr := 'PAGE UP';
VK_NEXT: tempstr := 'PAGE DOWN';
VK_END: tempstr := 'END';
VK_HOME: tempstr := 'HOME';
VK_LEFT: tempstr := 'LEFT ARROW';
VK_UP: tempstr := 'UP ARROW';
VK_RIGHT: tempstr := 'RIGHT ARROW';
VK_DOWN: tempstr := 'DOWN ARROW';
VK_SELECT: tempstr := 'SELECT';
VK_EXECUTE: tempstr := 'EXECUTE';
VK_SNAPSHOT: tempstr := 'PRINT SCREEN';
VK_INSERT: tempstr := 'INS';
VK_DELETE: tempstr := 'DEL';
VK_HELP: tempstr := 'HELP';
{VK_1..VK_0 and VK_A..VK_Z are not defined so you have to use the Ord()
function instead which yields the equivilent VK code}
Alral (2006-08-18 00:10:00) [28]Spasibo
Virgo_Style (2006-08-17 23:52:00) [29]
> для Shift (и CapsLock) цифр и символов
для Shift (и CapsLock) при нажатии клавиш, соответствующих цифрам и символам
Virgo_Style (2006-08-17 23:50:00) [30]Галинка © (17.08.06 23:25) [6]
в OnKeyPress для Shift (и CapsLock) цифр и символов действует принцип "что вы видите, то вы и получите".
Для остальных... Хм. Еще раз - см. [1].
Галинка (2006-08-17 23:50:00) [31]Извините, меняются конечно )))
Джо (2006-08-17 23:40:00) [32]> [6] Галинка © (17.08.06 23:25)
> А как сеняются
А что это? :)
Галинка (2006-08-17 23:25:00) [33]А как сеняются коды клавишь, когда они нажимаются вместе с шифтом или контролом или альтом?
Джо (2006-08-17 21:51:00) [34]> [3] Alral © (17.08.06 21:42)
> Net, ja imeju vvidu, naprimer, nazhat enter, ja ze ne napishu
> v OnKeyPress "if key=Enter then...", eto zhe budet Undeclared
> identifier, a kak togda, vo chto ja imeju vvidu.
Код, приведенный в посте [1] и предназначен для того, чтобы узнать искомый код нажимаемой клавиши.
Virgo_Style (2006-08-17 21:45:00) [35]Alral © (17.08.06 21:42) [3]
см. VK_ - константы. afair, для Enter - VK_RETURN.
ну и [1].
Alral (2006-08-17 21:42:00) [36]Net, ja imeju vvidu, naprimer, nazhat enter, ja ze ne napishu v OnKeyPress "if key=Enter then...", eto zhe budet Undeclared identifier, a kak togda, vo chto ja imeju vvidu.
Джо (2006-08-17 21:37:00) [37]> Где их можно найти?
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
ShowMessage (IntToStr(Ord(Key)))
end;
Virgo_Style (2006-08-17 21:37:00) [38]зачем номер? Хотя... если нужен, то так:
ord(' ');
тогда проверка будет выглядеть как if ...=chr( ord(' '));, но мы ведь трудностей не боимся? ;-)))