Everytime one changes the date in TDateTimePicker, FormActivate is called. Is this normal behaviour?
I think so. Because the dropdown calendar is in its own form which is shown non-modally. The same occurs for TDateEdit and TTimeEdit. Whenever a non-modal form is activated/deactivated the OnActivate and OnDeactivate events are fired. And this happens when these dropdowns are closed - now the parenting form becomes active again and fires the OnActivate event.
TCalcEdit and TDirectoryEdit do not show this behaviour - here the "dropdown" is a separate form, too, but it is a shown modally. When focus returns to the initial form after closing a modal form the OnActivate event does not fire.
Maybe the TColorPicker, TDateEdit and TTimeEdit can be rewritten to show the dropdowns modally (I have no idea about the implications) or to use custom controls rather than forms for their dropdowns - but all these require a major rework in these components.
You should reconsider the logic of your event handling. For example you can provide a boolean "ActivateCalled" status variable which you set to true the first time when the form gets activated and thus can prevent execution of the code in the OnActivate handler multiple times (
https://wiki.freepascal.org/Execute_action_after_form_is_shown#OnActivate_event).