C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Коды кнопок
.piero
  Отправлено: 02.05.2004, 21:46


Дежурный стрелочник

Группа: Участник
Сообщений: 62



В консольках вместо названия кнопки писался её ASCII код, а в VCL эти коды оказываются совсем другими кнопками, как быть

Типа этого
CODE

Switch(..){
case 'w':
case 'e':
...
}

я уже пробовал, не получилось.
exp
Отправлено: 02.05.2004, 22:08


Мастер участка

Группа: Участник
Сообщений: 304



ну так узнай их
CODE

void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
Label1->Caption = IntToStr(Key);
}

На форме 1 лабел. Жмешь кнопки — записываешь код.
olegenty
Отправлено: 03.05.2004, 06:51


Ветеран

Группа: Модератор
Сообщений: 2412



не получилось, потому что возвращается "W" и "E", а не "w" и "e" — в доках написано, что коды возвращаются для ВЕРХНЕГО РЕГИСТРА.

смею, одноко, заметить, что всё зависит от обрабатываемого события. есть событие OnKeyDown, суть — обработчик WM_KEYDOWN, а есть OnKeyPress, суть — обработчик WM_CHAR. так вот, тебе нужен последний. потому что следующий код — рабочий:
CODE

void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
   switch (Key)
   {
       case 'w': ShowMessage(Key);
           break;
       case 'W': ShowMessage(Key);
   }
}


всё-таки доки читать невредно...
exp
Отправлено: 03.05.2004, 23:20


Мастер участка

Группа: Участник
Сообщений: 304



но проверять тоже не помешает. Не знаю, что у тебя не получилось?
CODE

Label1->Caption = IntToStr(Key) + " "+Key;

Вот соответствие кода символу.

Вернуться в Вопросы программирования в C++Builder