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

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

11.10.2016, 11:08. Показов 1635. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru