Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Коды клавиш. [D7, XP]


Страницы:   1 2

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(' '));, но мы ведь трудностей не боимся? ;-)))


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо