Показать сообщение отдельно
  #8  
Старый 15.02.2016, 16:04
alekso alekso вне форума
Прохожий
 
Регистрация: 17.08.2015
Сообщения: 11
Версия Delphi: DELPHI XE
Репутация: 10
По умолчанию

Цитата:
Сообщение от dr. F.I.N.
Вкратце:
-Программа на VCL работает в потоке, в котором кружится цикл приема сообщений от системы.
-В глобальном смысле, контролы (формы, кнопки, поля ввода и т.д. и т.п.) - окна windows. Вернее даже не сами окна, а обертки над этими окнами. Когда контрол пораждает окно, к этому окну привязывается функция обработки приходящих сообшений Windows.
-В параметры этой функции система передает ряд параметров, по одному из них обертка VCL получает ссылку на контрол-обертку окна и передает этому контролу параметры прилетевшего сообщения.
-Контрол обертка обрабатывает эти сообщения (WM_ACTIVATE, WM_SHOW, WM_MOUSEDOWN и т.д. и т.п.)
-Исходя из перечня обрабатываемых сообщений, контрол генерирует событие OnActivate, OnClick, OnDblClick и т.д. и т.п., передавая в параметр этих событий себя как Sender.

Т.е. при сработке события ты можешь узнать, кто его вызвал.

Что касается "А как получить какое именно событие произошло?". Если ты в событии OnClick пытаешься узнать, какое событие произошло, то наверное OnClick. Либо некорректен вопрос, либо ты не понимаешь чего тебе самому нужно.

И да, TLabel - не оконный контрол. У него нет окна и сообщения получает не он, а его Parent. Но это уже дебри - не забивай голову.



Вопрос скорей вот такой, где именно в коде (а не в инспекторе объектов) я могу увидеть что по событию onclick должна вызваться процедура Edit1Click (ну или другая в зависимости от того как я ее назову).
Ответить с цитированием