In the System.Messaging unit, you can find some base definitions such as TMessageBase, TMessage<T>, and TObjectMessage<T>. The type of the message is a crucial point of this mechanism as you can send a message of a certain type X, you will subscribe to a message by its type X, and the message handler will probably need to know details of the message content (tied to its type X, or T if you are using TMessage<T>).
If you simply need to define a new kind of event, you may want to define a type and inherit your type, TEventX, from TMessageBase:
TEventX = class(TMessageBase);
The type definition is unique in the type system so it can be used as a key to bind a listener to that specific type.
Moreover, if you need to carry some values within the message, you may want to make your type more complex, adding properties and/or constructors to initialize them.