Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54

Как из TImage увидеть нажатие кнопки клавиатуры TForm1::OnKeyUp?

11.10.2016, 11:08. Показов 1585. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По идее, программа выполнив очередные действия переходит в режим ожидания "важных событий".
Но у меня (нарисовав нужное на Canvas-е Image) программа не видит нажатие клавиш на клавиатуре.
Почему это может быть?

Не работает и
C++
1
 { ch=_getch(); }while(ch!='1');
т.к программа загружает "море" информации из множества файлов (не все из них можно закрыть, поэтому стандартный ввод с клавиатуры "занят" файлом).
И на запрос к клавиатуре getch() "зависает" посылая кучу 'яяяяя...' - (EOF-ов = конец файла).

Как
- либо увидеть TForm1::OnKeyUp(... ?
- либо сказать, что стандартный ввод (stdin) ожидается именно с клавиатуры?
- или что-то иное...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2016, 11:08
Ответы с готовыми решениями:

Как имитировать нажатие кнопки мыши или клавиатуры?
ПОМОГИТЕ! Как имитировать нажатие кнопки мыши или клавиатуры

Нажатие кнопки с клавиатуры
Доброго времени суток, умные и не очень, люди. Помогите разобраться еще более глупому человеку: я создал форму кнопки, затем вставил в код:...

Отследить нажатие кнопки с клавиатуры
Добрый день, написал я программу, которая отправляет пакеты, и в игре меняется одежда. Хочу добиться того, чтобы я свернул свою...

12
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.10.2016, 11:21
Какой getch()? У тебя консольное приложение или с формой?
0
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
11.10.2016, 11:56  [ТС]
С формой, на форме Image.
Если повесить редакционное окно (Edit1), то из него можно получать данные (там есть 3 OnKey...), но можно ли без него?
Или как повесить окно, но не видеть его под Image?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.10.2016, 12:15
В форме обработчик нажатий клавиш есть?
0
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
11.10.2016, 12:26  [ТС]
Есть. О чём я и сообщаю в заголовке темы.
Но он почему-то не реагирует на клавиши.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.10.2016, 12:28
Покажи.
0
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
11.10.2016, 12:34  [ТС]
Как показать? Что именно?

C++
1
2
3
4
void __fastcall TForm1::OnKeyUp1(TObject *Sender, WORD &Key,TShiftState Shift)
{
   Form1->Image1->Canvas->TextOutA(2,0,500,700,"символ");
}
На эту п/п в Unit1.cpp отладчик не выходит.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.10.2016, 12:41
Почему OnKeyUp, а не OnKeyPressed или OnKeyDown?
1
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
11.10.2016, 16:24  [ТС]
А есть разница?
Up более грамотно, чем Down т.к. бывают залипания некоторых клавиш.
И потом они всегда парны.

Добавлено через 1 час 24 минуты
Странно... Оказывается разница есть.

Вот эта подпрограмма работает!
C++
1
2
3
4
5
void __fastcall TForm1::OnKeyPress(TObject *Sender, char &Key)
{
Form1->Image1->Canvas->TextOutA(500+i*8,700,Key); i++;
   if(i==2)   BE_Top(Yok=-20); // подпрограмма BE_Top убирает Edit1-окно с экрана
}
Работа происходит так:
1. на экран выдвигается окно (Edit1)
2. мышкой становимся в окно
3. вводим текст. После 2-го символа окно исчезает, но символы принимаются и выходят на экран.

nmcf, большое Вам спасибо за вовремя заданный вопрос.
Вы мне очень сильно помогли.

Добавлено через 33 минуты
============
Мда...
Оказывается и окно не нужно. OnKeyPress один справляется ...
Век живи, век учись...

Добавлено через 1 час 41 минуту
Нет, показалось... Всёже без окна Edit1 нельзя...
На этом прекращаю. Хотя, вероятно, возможно что-то и попроще.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.10.2016, 16:41
Что за окно Edit1? Форма (TForm) может сама принимать нажатия, если она активна.
0
 Аватар для BOGG ART
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
11.10.2016, 16:55
Лучший ответ Сообщение было отмечено ZaRus1 как решение

Решение

У класса TForm есть свойство KeyPreview, настраивается в инспекторе.
У класса TForm есть события OnKeyPress, OnKeyDown, OnKeyUp.
1
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
11.10.2016, 18:59  [ТС]
Вы правы. Большое Вам спасибо.
Так проще и без всяких примочек с окнами редактирования.

C++
1
2
3
4
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
   Form1->Image1->Canvas->TextOutA(500+i*8,700,Key); i++;
}
0
 Аватар для BOGG ART
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
11.10.2016, 19:40
Малюсенькая поправка: внутри обработчиков "TForm1:: ..." не надо писать "Form1->". Или ничего не писать, или "this".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2016, 19:40
Помогаю со студенческими работами здесь

Событие - нажатие кнопки клавиатуры
Доброго дня! Немного подзабыл, подскажите, у меня есть 2 кнопки на форме: procedure TForm1.Button1Click(Sender: TObject); begin ...

Программное нажатие на кнопки клавиатуры, с определённым интервалом
Добрый день,хочу чтобы моя программа ,при нажатии на F8 ,нажимала на определённые клавиши ,с определённым интервалом.Искал в...

Событие нажатие кнопки клавиатуры при неактивной форме
Как обработать событие нажатие кнопки клавиатуры при неактивной форме?

Связать нажатие и отжатие клавиши клавиатуры и кнопки на форме
Приветствую! Простейшая с виду задача. Нужно сделать так, чтобы при нажатии на клавишу М, происходило визуальное нажатие кнопки на...

Как сделать TForm1::Image1MouseDown членом класса TForm1?
Здравствуйте. Мне задали сделать программу для рисования мышкой. И вот я нашел такую тему, в которой предлагали интересный способ решения...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru