Root > How to... > ...add an event handler? > ...register event handler from code?

...register event handler from code?

Previous pageReturn to chapter overviewNext page   

Using TEurekaLogEvents component is a simple way to register your event handler. However, it is not enough if you want to react to events when form is not created. You can register event handler manually from your code.


You need to include EEvents unit in uses clause. And you need to register your event handler via one of RegisterEventXYZ procedures:


procedure MyExceptionNotifyHandler(const ACustom: Pointer; 

  AExceptionInfo: TEurekaExceptionInfo; 

  var AHandle: Boolean; 

  var ACallNextHandler: Boolean);
  // your code here
  RegisterEventExceptionNotify(nil, MyExceptionNotifyHandler);


Each event is represented as method and procedural type - ending in ...Meth and ...Proc correspondingly. For example, OnExceptionNotify event is represented by:


As you may already guessed: method types are used for TEurekaLogEvents component; procedural types are used for manual registration from code. However, nothing stops you from registering method event handler from code too.


Important Notes:

If you are going to change EurekaLog's settings from your event handler - be sure to alter local options (AExceptionInfo.Options), not global options (CurrentEurekaLogOptions). See this article for explanation.
If you enable EurekaLog for background threads - your event handlers will be called in the context of corresponding thread. E.g. if exception happens in a background thread - your event handlers will be called by this thread. Therefore, you need to use some sort of synchronization if you are going to access global data. For example, if you want to access forms (VCL) in your event handlers - then you must marshal these calls to the main thread (for example, by using SendMessage, TThread.Synchronize, or TThread.Queue).



See also:

Send feedback... Build date: 2021-10-15
Last edited: 2019-02-26
The documentation team uses the feedback submitted to improve the EurekaLog documentation. We do not use your e-mail address for any other purpose. We will remove your e-mail address from our system after the issue you are reporting has been resolved. While we are working to resolve this issue, we may send you an e-mail message to request more information about your feedback. After the issues have been addressed, we may send you an email message to let you know that your feedback has been addressed.

Permanent link to this article: