Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30

Вопрос по TForm::OnKeyPress

02.06.2009, 20:51. Показов 4150. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть форма. На ней расположен TStringGrid и несколько кнопочек. Хочется отработать нажатие на клавишу (независимо от того, на каком из элементов находится фокус).

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

Кстати, нажатие на клавишу F5 в указанном выше случае не отлавливается (т.е. в обработчик не попадем)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2009, 20:51
Ответы с готовыми решениями:

Вопрос по TForm
Есть главная форма приложения Form1. Есть дополнительная форма Form2, которая создаётся сразу же при запуске приложения, но не...

Вопрос про событие OnKeyPress.
В общем, мне нужно, чтобы при нажатии на кнопки "вниз", "вправо", "влево", "вверх" переменная меняла свои значения и выводилась в лэйбл. Но...

TForm
Доброго времени суток! Но у меня весьма глупый вопрос! Делаю свой проект, уже научился пользоваться базой данных, конектить её,...

24
сишник
Автор FAQ
130 / 36 / 1
Регистрация: 25.07.2009
Сообщений: 291
29.09.2009, 16:13
Студворк — интернет-сервис помощи студентам
Evg, для каждой формы ChildForm главного окна делай так:
C++
1
2
3
4
5
6
7
#include "MainForm.h"
void __fastcall ChForm::ChFormCreate(TObject *Sender)
{
OnKeyPress = MainForm->OnKeyPress;
}
//MainForm - главная форма,
//ChForm - экземпляр дочерней формы
Пишу на память, давно не работал с MDI.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
29.09.2009, 16:18  [ТС]
chelovechek, спасибо конечно, но это по большому счёту то же самое, но более элегантно

Просто при такой трактовке получается, что иерархии между разными окнами нет и они вроде бы как иерархически расположены на одном и том же уровне, хотя одно окно может народить других
0
сишник
Автор FAQ
130 / 36 / 1
Регистрация: 25.07.2009
Сообщений: 291
29.09.2009, 16:30
Цитата Сообщение от Evg Посмотреть сообщение
хотя одно окно может народить других
Нет. Дочернее окно - это экземпляр формы, иначе диалоговое окно. Создание окон в дочернем окне - это именно создание окон, контролов и т.д. Обработка диалоговых окон и WINAPI-шных окон различается (CreateWindowEx и CreateDialogParam).

Добавлено через 3 минуты
Рекомендую к прочтению: http://msdn.microsoft.com/en-u... S.60).aspx.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
29.09.2009, 16:31  [ТС]
Цитата Сообщение от chelovechek Посмотреть сообщение
Нет. Дочернее окно - это экземпляр формы, иначе диалоговое окно. Создание окон в дочернем окне - это именно создание окон, контролов и т.д. Обработка диалоговых окон и WINAPI-шных окон различается (CreateWindowEx и CreateDialogParam).
Под "хотя одно окно может народить других" я имел в виду то, что главное окно может создать кучу внутренних дочерних. И с этой точки зрения они должны находиться на разных уровнях иерархии. Но поскольку мы из дочернего окна лезем в главное (в обработчик), то получается, что они на одном уровне. Я говорю про логические (идеологические) уровни, но не технические

Добавлено через 1 минуту
И при моей концепции "логично" было бы из обработчика главного окна дёргать обработчик активного дочернего окна. Но событие приходит именно к дочернему, а не к главному
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
01.10.2009, 22:01  [ТС]
Цитата Сообщение от chelovechek Посмотреть сообщение
Evg, для каждой формы ChildForm главного окна делай так:
C++
1
2
3
4
5
6
7
#include "MainForm.h"
void __fastcall ChForm::ChFormCreate(TObject *Sender)
{
OnKeyPress = MainForm->OnKeyPress;
}
//MainForm - главная форма,
//ChForm - экземпляр дочерней формы
Пишу на память, давно не работал с MDI.
А ведь OnKeyPress - это виртуальный метод класса, но никак не указатель на функцию. Т.е. его можно только определить, но подсунуть чужой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.10.2009, 22:01

TForm
Доброго времени суток дорогие программисты Не могу разобраться с динамическим созданием форм. Мне нужно по нажатии клавиши создать n...

Наследник TForm
Доброго времени суток всем. Такая проблема: создал модуль, в нем описал класс: #include <Forms.hpp> class TMyForm : public...

Об'єкт TForm
Помогите пожалуйста сделать: Создайте новый проект. Дайте форме заголовок. Сохраните проект в отдельном каталоге. Установите размер...

Рисовалка TForm
Приветствую всех! У меня такая проблема, нужно чтобы по нажатию левой клавиши мышки рисовался граф. примитив. Но так вышло что сначала у...

Переcоздание TForm
Ребят, в общем задача простая: есть форма, на ней n-контролов (боксы, едиты, листы и пр.), которые заполняются. Есть кнопка по нажатию...


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

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

Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru