Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
1

OnKeyDown не работает с символами

24.08.2011, 17:20. Показов 2420. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
почему OnKeyDown не работает с символами, или как можно научить его с ними работать???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2011, 17:20
Ответы с готовыми решениями:

Не работает OnKeyDown на форме fsMDIForm
На форме fsMDIForm не работает событие OnKeyDown (даже если установить KeyPreview). Если установить...

OnKeyDown
Я хочу чтобы по нажатию кнопки на клавиатуре производилось действие, но если на форме присутствует...

про OnKeyDown
Как использовать 2 клавиши одновременно тоетсь if(Key==VK_LEFT&&Key==VK_UP) так не работает,...

OnKeyDown не на форме.
Люди, скажите как сделать OnKeyDown не на форме, а вообще. Поясняю: Пишу программу-скриншотер и мне...

13
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
24.08.2011, 17:30 2
Какими символами? Объясни толком
0
LK
Заблокирован
24.08.2011, 17:35 3
объясняю:
летят два слова, один - жёлтый, другой - в Африку , вопрос - сколько им лет ?
1
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
24.08.2011, 18:14  [ТС] 4
Ну в OnKeyDown используется WORD тоетсь клавиши типо VK_LEFT, а в OnKeyPress char клавиши типо 'w' 's' 'a' 'd', надеюсь обяснил доходчиво, ну так вот можно ли научить OnKeyDown использовать char???
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
24.08.2011, 18:45 5
Найди книгу Архангельского "C++Builder.Справочное пособие. 2 книга. Классы и компоненты"
KeyDown просто обрабатывает нажатие кнопки, она не различает регистр символов и русскую/английскую раскладку клавиатуры.
1
Покинул форум
3187 / 1366 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
24.08.2011, 19:04 6
Вроде, все работает:
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if( Key == 'W')Object->Top-=5;
if( Key == 'S')Object->Top+=5;
if( Key == 'D')Object->Left+=5;
if( Key == 'A')Object->Left-=5;
}
//---------------------------------------------------------------------------
1
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
24.08.2011, 19:07  [ТС] 7
Цитата Сообщение от NiTan Посмотреть сообщение
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if( Key == 'W')Object->Top-=5;
if( Key == 'S')Object->Top+=5;
if( Key == 'D')Object->Left+=5;
if( Key == 'A')Object->Left-=5;
}
как так, у вас 6 билдер???
0
LK
Заблокирован
24.08.2011, 19:36 8
Цитата Сообщение от GoldDragon Посмотреть сообщение
как так, у вас 6 билдер???
та без разницы.
1
Прогер
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
24.08.2011, 20:00 9
GoldDragon,
"Object" не надо принимать на деиствително "Object", в место Object можна и Image1
2
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
24.08.2011, 20:32  [ТС] 10
Цитата Сообщение от Programmer. Посмотреть сообщение
"Object" не надо принимать на деиствително "Object", в место Object можна и Image1
эт я понял, у меня короче билдер деблиный, не работает
0
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
24.08.2011, 20:52 11
Поставь

C++
1
Form1->KeyPreview = true;
Весь код выглядит так
C++
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
Form1->KeyPreview = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
if (Key == 'D') Button1->Left = Button1->Left + 5;
else if (Key == 'A') Button1->Left = Button1->Left - 5;
else if (Key == 'S') Button1->Top = Button1->Top + 5;
else if (Key == 'W') Button1->Top = Button1->Top - 5;
}
//---------------------------------------------------------------------------
1
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
24.08.2011, 21:02  [ТС] 12
Короче у меня из за старых файлов которые в документе были каша получилась, я там стёр всё и сразу всё заработало))
Всем спасиб
0
Прогер
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
24.08.2011, 21:07 13
GoldDragon,
Ок... Good luck
0
LK
Заблокирован
24.08.2011, 21:57 14
Цитата Сообщение от Programmer. Посмотреть сообщение
Good luck
а я бы посоветовал Good LooK, в переводе на русский - Смотри-В-Оба. В код, и не не только.
1
24.08.2011, 21:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2011, 21:57
Помогаю со студенческими работами здесь

Не работает OnKeyDown
Нужно, чтобы при Ctrl+S появилось сообщение. Пробовал много чего но не работает! 1. Не...

Почему IF с символами не работает?
//Îïðåäåëèòü äîëþ ãëàñíûõ áóêâ â çàäàííîì òåêñòå íà ðóññêîì (àíãëèéñêîì) ÿçûêå. #include &lt;stdio.h&gt;...

Не работает XOR с русскими символами
Необходимо написать приложение XOR-шифрования на Android - написал. Собственно само шифрование...

Программа не работает с русскими символами
Программа должна находить два самых часто встречающихся символа и вывести их.Потом убрать лишние...


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

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