Calling the Event
Go Up to Defining Your Own Events
In your components, you may need to trigger the same event from different parts in your code. You should centralize these calls to an event. That is, create a virtual method in your component that calls the application's event handler (if there is one assigned) and provides any default handling.
These virtual methods are called event dispatchers or Do methods. This is because the most spread naming convention is to name these methods after the event that they trigger, replacing the On
prefix with a Do
. For example, the convention for the event dispatcher that triggers the OnClick
event would be to name it DoClick
.
Putting all the event calls in one place ensures that someone deriving a new component from yours can customize event handling by overriding a single method, rather than searching through your code for places where you call the event.
Considerations When Calling The Event
There are two other considerations when calling the event:
Example of an Event Dispatcher
The following is the most simple example of an event dispatcher that follows the considerations listed above:
C++:
virtual void __fastcall TComponentName::DoEventName(UnicodeString Parameter1, UnicodeString Parameter2)
{
if (FOnEventName)
FOnEventName(this, Parameter1, Parameter2);
}
Delphi:
procedure TComponentName.DoEventName(Parameter1, Parameter2: string);
begin
if Assigned(FOnEventName) then
FOnEventName(Self, Parameter1, Parameter2);
end;
Using an event dispatcher lets you reduce calls to the event handler to one line. You do not need to check if the FOnEventName variable is assigned every time, you simply call the event dispatcher and this procedure takes care of checking the variable.
This approach also allows developers to create a subclass of your component, to easily override the event triggering.