Wenn du im DateTimePicker die Werte änderst, dann wird die Methode TDateTimePicker.CNNotify aufgerufen.
Hier drin wird je nach Windows-Message Datum und Uhrzeit gesetzt (TCommonCalendar.SetDate von der übergeordneten Klasse und TDateTimePicker.SetTime).
Anschließend wird TDateTimePicker.Change aufgerufen. In dieser Methode wird dein Event-Handler angesprochen, insofern du einen angefügt hast.
Wenn du bspw.
DateTimePicker1.Date := Date;
im Code schreibst, rufst du intern direkt SetDate auf und umgehst die Benachrichtigung durch den Event-Handler.
Du kannst dir Abhilfe schaffen, in dem du es folgendermaßen schreibst:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
DateTimePicker1.Date := Date;
DateTimePicker1.OnChange(nil);
end;