Обязательно должен быть тот самый предыдущий _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-ы разного калибра...
Понимаешь этот небольшой код - и все само собой запомнится