Показать сообщение отдельно
  #7  
Старый 15.02.2016, 15:42
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Цитата:
Сообщение от alekso
я имел ввиду каким образом delphi узнает что произошло именно событие нажатие на метке и обрабатывает его и как можно получить название событие, полагаю что это неявно передает SENDER как инициатор события.
Например какой именно класс иницировал событие я получить могу так:
procedure TForm3.Label1Click(Sender: TObject);
var
st:string;
begin
st:=sender.ClassName;
ShowMessage(st);
end;

А как получить какое именно событие произошло?

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

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

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

И да, TLabel - не оконный контрол. У него нет окна и сообщения получает не он, а его Parent. Но это уже дебри - не забивай голову.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием