Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
xTIGRx
292 / 198 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
#1

OnKeyDown не работает с символами - C++ Builder

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

почему OnKeyDown не работает с символами, или как можно научить его с ними работать???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2011, 17:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос OnKeyDown не работает с символами (C++ Builder):

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

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

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

про OnKeyDown
Как использовать 2 клавиши одновременно тоетсь ...

OnKeyDown формы перехватывается кнопкой
У меня есть форма(C++Builder 6),с обработчиком событий OnKeyDown, так же на...

Как вызвать обработчик события OnKeyDown?
В определенный момент времени нужно программно вызвать событие OnKeyDown. Как...

13
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
24.08.2011, 17:30 #2
Какими символами? Объясни толком
0
LK
Заблокирован
24.08.2011, 17:35 #3
объясняю:
летят два слова, один - жёлтый, другой - в Африку , вопрос - сколько им лет ?
1
xTIGRx
292 / 198 / 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
Grey
Тутошний я
1595 / 786 / 129
Регистрация: 03.11.2009
Сообщений: 2,241
Записей в блоге: 1
24.08.2011, 18:45 #5
Найди книгу Архангельского "C++Builder.Справочное пособие. 2 книга. Классы и компоненты"
KeyDown просто обрабатывает нажатие кнопки, она не различает регистр символов и русскую/английскую раскладку клавиатуры.
1
NiTan
Покинул форум
3162 / 1346 / 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
xTIGRx
292 / 198 / 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
Programmer.
Прогер
631 / 262 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
24.08.2011, 20:00 #9
GoldDragon,
"Object" не надо принимать на деиствително "Object", в место Object можна и Image1
2
xTIGRx
292 / 198 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
24.08.2011, 20:32  [ТС] #10
Цитата Сообщение от Programmer. Посмотреть сообщение
"Object" не надо принимать на деиствително "Object", в место Object можна и Image1
эт я понял, у меня короче билдер деблиный, не работает
0
Infinity3000
1060 / 579 / 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
xTIGRx
292 / 198 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
24.08.2011, 21:02  [ТС] #12
Короче у меня из за старых файлов которые в документе были каша получилась, я там стёр всё и сразу всё заработало))
Всем спасиб
0
Programmer.
Прогер
631 / 262 / 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2011, 21:57
Привет! Вот еще темы с решениями:

OnKeyDown или OnKeyPress событие в DLL
Здравствуйте, столкнулся с такой проблемой! У меня есть программа, очень...

Нестабильное нажатие клавиш. Повтор символов в обработчике onkeydown.
при зажатии клавиши есть задержка перед началом повтора символов в обработчике...

Создайте обработчик для текстового поля Memo OnKeyDown
Доброго дня всем. Я только начинаю программировать на си, вот не как не...

Какой код у клавиши "тильда" для OnKeyDown
Нужно отловить нажатие на клавишу &quot;тильда&quot; в событии OnKeyDown. Как её...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru