Here is an example of how you would do with TRect:
{ TMyAdditionalEvents }
procedure TMyEventsDispatcher.__TDrawItemEvent(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
if DoOnExecuteEvent then
begin
if AssignedMethod(BeforeCall) then
TDrawItemEvent(BeforeCall)(Control, Index, Rect, State);
if Assigned(Scripter) and (RoutineName > '') then
Scripter.ExecuteSubroutine(RoutineName, [Control, Index,
integer(TRectWrapper.Create(Rect)),
IntFromSet(State)]);
if AssignedMethod(AfterCall) then
TDrawItemEvent(AfterCall)(Control, Index, Rect, State);
end;
end;