Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2007-02-28 21:26:57 ЛС | профиль | цитата
Да.
Обязательно должен быть тот самый предыдущий _hi_onEvent
Вот здесь - нельзя:
procedure THIButton._OnClick;
begin
_hi_OnEvent_(_event_onClick,_prop_Data);
end;
Потому-что нет того самого ПРЕДЫДУЩЕГО - этот самый первый в цепочке
Собственно, как-то я не очень понимаю запоминание неких "правил"
Надо просто понимать смысл происходящего, тогда оно само запомнится. Причем так, что забыть будет просто невозможно...

А смысл здесь:
procedure __hi_OnEvent(const PointEvent:THI_Event;var Data:TData);
var P:PHI_Event;
begin
P := @PointEvent;
while Assigned(P.Event) do begin
{$ifdef _DEBUG_}CallEvent(2,P^,Data);{$endif}
P.Event(Data,P.Index);
if(Data.data_type and $80)=0 then break;
dec(Data.data_type,$80);
P := PHI_Event(Data.next);
end;
end;
Всякий вызов события придет именно сюда, и мимо никак не пройдет.
И видно, что тот же самый THIButton._OnClick может вызвать больше одного события.
Вот эти следующие события и формируют _hi_CreatEvent-ы разного калибра...

Понимаешь этот небольшой код - и все само собой запомнится
карма: 9

0