коди клавіш

Коди клавіш.

На скільки мені відомо, у клавіш як пробіл, enter і т.п. а так же ніби й у букв в Delphi є коди (#n, n-номер). Де їх можна знайти. Мене в даному випадку цікавить пробіл (як можна визначити # XA0;
натискання пробілу наприклад в OnKeyPress if Key = # код натискання на пробіл then. ), Але добре б і знати інші коди. Де їх можна знайти?

> Де їх можна знайти?

procedure TForm1.FormKeyPress (Sender: TObject; var Key: Char);
begin
# XA0; ShowMessage (IntToStr (Ord (Key)))
end;

навіщо номер? Хоча. якщо потрібен, то так: ord ( "");
тоді перевірка буде виглядати як if. = Chr (ord ( "")) ;, але ми адже труднощів не боїмося? ;-)))

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.

А як Сеня коди клавишь, коли вони натискаються разом з шифтом або контролом або альтом?

Вибачте, змінюються звичайно)))

в OnKeyPress для Shift (і CapsLock) цифр і символів діє принцип "що ви бачите, то ви і отримаєте".
Для інших. Хм. Ще раз - см. [1].


> Для Shift (і CapsLock) цифр і символів

для Shift (і CapsLock) при натисканні клавіш, що відповідають цифрам і символам


> # XA0; Коди клавіш

case Key of
# XA0; # XA0; VK_CANCEL: tempstr: = "CANCEL";
# XA0; # XA0; VK_BACK: tempstr: = "BACKSPACE";
# XA0; # XA0; VK_TAB: tempstr: = "TAB";
# XA0; # XA0; VK_CLEAR: tempstr: = "CLEAR";
# XA0; # XA0; VK_RETURN: tempstr: = "ENTER";
# XA0; # XA0; VK_PAUSE: tempstr: = "PAUSE";
# XA0; # XA0; VK_CAPITAL: tempstr: = "CAPS LOCK";
# XA0; # XA0; VK_ESCAPE: tempstr: = "ESC";
# XA0; # XA0; VK_SPACE: tempstr: = "SPACEBAR";
# XA0; # XA0; VK_PRIOR: tempstr: = "PAGE UP";
# XA0; # XA0; VK_NEXT: tempstr: = "PAGE DOWN";
# XA0; # XA0; VK_END: ​​tempstr: = "END";
# XA0; # XA0; VK_HOME: tempstr: = "HOME";
# XA0; # XA0; VK_LEFT: tempstr: = "LEFT ARROW";
# XA0; # XA0; VK_UP: tempstr: = "UP ARROW";
# XA0; # XA0; VK_RIGHT: tempstr: = "RIGHT ARROW";
# XA0; # XA0; VK_DOWN: tempstr: = "DOWN ARROW";
# XA0; # XA0; VK_SELECT: tempstr: = "SELECT";
# XA0; # XA0; VK_EXECUTE: tempstr: = "EXECUTE";
# XA0; # XA0; VK_SNAPSHOT: tempstr: = "PRINT SCREEN";
# XA0; # XA0; VK_INSERT: tempstr: = "INS";
# XA0; # XA0; VK_DELETE: tempstr: = "DEL";
# XA0; # XA0; VK_HELP: tempstr: = "HELP";

Ще раз. Що я повинна бачити? Ну, наприклад, набираю я шоткат Alt + E (зазвичай вихід з програми). Які символи ви бачите буде сгененрірован?

> # XA0; разом з шифтом або контролом або альтом?

Ось просто трохи для довідки. Може бути, допоможе кому-небудь розібратися. У OnKeyDown можна розпізнати натиснуті клавіші (вкл. Функціональні і кнопки миші), але не можна розпізнати символ. У OnKeyPress можна розпізнати натиснуту клавішу символу, сам символ, але не можна функціональні клавіші. Shift + символ - OnKeyPress настає і все ок. Alt + символ - OnKeyPress не настає. Ctrl + символ - OnKeyPress настає, але вказує на невірний символ.

Коротше. бардак. а як саме середовище їх розпізнає? Може тому їх зовні і не можна розпізнати, щоб особливо розумні не переважають?

Ніякого безладу.
У keydown "е код тій самій клавіші, в keypress" е символ, якщо звичайно це символ.

Символ залежить ще і від поточної мови, статусу shift і capslock. Естесственно його не може бути в keydown.

в [14] показано, як уотловіть натискання клавіші разом з контролом

З контролом зрозуміло. А з альтом?


> З контролом зрозуміло. А з альтом?

c альтом - це до музикантів

ЗИ. Як тут люблять говорити "Я плякал"

Розібралася на кшталт. З контролом або альтом отлавливается код великої літери латинського алфавіту. Незалежно від обраної розкладки клавіатури. Тобто це перший ASCII код, що відноситься до утримуючи клавішу.

А як зловити натискання функціональних клавишь F1-F12?

Ну звиняйте. Я вже два роки з Дельфі не працювала. Я взагалі два роки вже не працюю. Навички однак губляться.


> А як зловити натискання функціональних клавишь F1-F12?

для проги натискання Ф нічим не відрізняється від натискання ентер

procedure TForm1.Button1KeyDown (Sender: TObject; var Key: Word;
# XA0; Shift: TShiftState);
begin
showmessage (inttostr (key));
end;

if (ssCtrl in Shift) and (key =.) then.

Undeclared identifier "Shift".

> V Form1KeyPress:

> Undeclared identifier "Shift".

А причому тут OnKeyPress?
У нім є тільки WM_CHAR.

> V Form1KeyDown

> Incompactible types.

Мабуть, в цьому (key =.) # XA0; воно і є.

Da, v etom, a kakoi simvol dolzhen bit? Naprimer dlja T?

> Da, v etom, a kakoi simvol dolzhen bit? Naprimer dlja T?

В "цьому" це в чому? key = "T"?

if (ssCtrl in Shift) and ((Key = Ord ( "T")) then.

> If (ssCtrl in Shift) and ((Key = Ord ( "T")) then.

Так, звичайно, Ord.
Sorry.

я вже в принципі розібралася, що ні бардак. Я не розібралася поки тільки, як відловити, наприклад, Ctrl + F2, ну тобто альта / контрола з функціональними клавішами.

да, перепрошую. звичайно ж, після alt +<что-то> воднікают UP і DOWN, який потім TranslateMessage () обарбативает. % -)