Тому кто даже до этого вопроса не догадался...
А про то, что в предложенном коде ReadData использует неинициализированные данные (dt) -- положено самому догадываться.
Тому, кто предлагает коды к использованию.
------------ Дoбавленo в 18.04:
Делов - на строчку кода... И ту, без ошибок сделать не умеют. Эксперты, блин.
#pas
procedure THIButton._OnClick;
var dt:TData;
begin
dt := ReadData(_data_Empty, _data_Data, @_prop_Data);
_hi_OnEvent(_event_onClick, dt);
end;