Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977

Перехват компонентом событий формы

24.02.2014, 19:32. Показов 2107. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!
Подскажите, как реализовать перехват событий родительской формы (например, ресайз) в коде компонента, без изменения кода приложения.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.02.2014, 19:32
Ответы с готовыми решениями:

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

Перехват событий браузера
WebBrowser2.OleObject.Document.Write('<html><body><table><tr><td><a href=''>тут текст 1</a></td><td><a href=''>тут текст...

Перехват/изменение событий onClick
Задача: есть форма (и даже не одна) на которой огромное количество компонентом, у каждого компонента есть обработчки события onClick...

7
Пишу на Delphi...иногда
 Аватар для cotseec
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
24.02.2014, 19:36
Лучший ответ Сообщение было отмечено FIL как решение

Решение

сабклассировать родительское окно в самом компоненте Сабклассинг и суперклассинг
1
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
24.02.2014, 21:01  [ТС]
cotseec, с сабклассингом я знаком, просто не догоняю как мне это может помочь.
На сколько я понимаю, мне надо из Формы-родителя компонента выцепить ее WndProc и подменить своим, в конце которого будет вызываться "оригинал".
Или в компоненте объявить класс от ТФорм и через него получать WndProc?... попробуем...

Добавлено через 3 минуты
Еще такую штуку нарыл:
Delphi
1
SetWindowLong(Handle, GWL_WNDPROC, Longint(@NewWinProc));
0
Пишу на Delphi...иногда
 Аватар для cotseec
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
24.02.2014, 21:10
Цитата Сообщение от FIL Посмотреть сообщение
мне надо из Формы-родителя компонента выцепить ее WndProc и подменить своим, в конце которого будет вызываться "оригинал"
при создании объекта получаем оконную функцию родителя и подменяем ее на свой обработчик, в соем обработчике получаем сообщения, адресованные родителю, анализируем и вызываем старую оконную функцию родителя, при уничтожении объекта не забываем вернуть оригинальную оконную функцию родителя

Цитата Сообщение от FIL Посмотреть сообщение
Еще такую штуку нарыл:
это как бы и есть замена оконной функции окна с хендлом Handle на свою (в приведенном куске старая функция теряется)
1
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
24.02.2014, 21:12  [ТС]
cotseec, спасибо. Разобрался.
0
Пишу на Delphi...иногда
 Аватар для cotseec
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
24.02.2014, 21:16
в догонку Перехват оконных сообщений в CBuilder

Добавлено через 26 секунд
успехов
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
24.02.2014, 21:51
FIL, именно ресайз родительского контрола и без перехвата оконных сообщений и без саблассинга прекрасно ловится. Достаточно переопределить SetBounds, и выставить контролу Align в любое значение, кроме alNone (обычно выставляют alCustom). При ресайзе родительского контрола он будет рассылать всем дочерним, которые с каким-либо выравниванием ( кроме никакого ) уведомление (в виде вызова SetBounds дочернего контрола) о том, что, собственно, размеры изменились, и неплохо бы пересчитать свое положение.
1
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
24.02.2014, 21:57  [ТС]
UI, оригинальное решение - возьму на заметку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.02.2014, 21:57
Помогаю со студенческими работами здесь

Ошибка при закрытии формы с компонентом WebBrowser
Есть форма, а на ней WebBrowser. Зметил что когда WebBrowser грузится и в этот момент закрыть форму, то выскакивает ошибка: First chance...

Перехват Escape для всех элементов формы
Товарищи - помогите! при открытой форме проекта нужна перехватить нажатие клавиши esc с клавиатуры и вывести при этом сообщение. Писал...

Перехват событий формы после Process.WaitForExit()
Доброго времени суток. Проблема в следующем: есть форма, на которой несколько кнопок, к каждой привязано событие. одна из кнопок...

Обработка событий вне формы (глобальный перехват клавиш)
Здравствуйте, уважаемые форумчане! В процессе обучения у меня возникли 2 вопроса: 1. Можно ли написать приложение для обработки нажатия...

Перехват событий от IE
Люди, помогите, хоть совет какой-нить подкиньте, если решение не знаете!? Мне надо написать прогу на .NET, которая бы тихо висела где-нить...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru