You have two relatively simple options:
• create a default child record, maybe with an explanatory message like “no events added yet” to display in the list view; delete that record when a real children is added.
Drawback: might require additional fields to avoid skewing summary results.
• create a calc field in the parent table that List()s the event entries; in the list view, make the field large enough to accommodate the maximum number of child entries, and use sliding to adjust the field to just the necessary size.
Drawback: you have to create a calc field in the child table to display multiple fields combined (and List() that field in the parent table).
More complicated approaches would involve e.g the Virtual List method.
btw, your problem seems to be solely the missing child records to represent a parent; I see nothing in your description about cross-tab reporting.
Child table = Events tract by Values […]
• create a default child record, maybe with an explanatory message like “no events added yet” to display in the list view
No need for an extra field. You could set the text message as placeholder text in one of the real fields, so it shows when the field is empty.