Hallo,
beim Tracing habe ich festgestellt, dass ein Statement, welches ich irrtümlich für den Auslöser des Events (deshalb meine Unterstellung es sei so gewollt) gehalten hatte, lediglich eine EventMask gesetzt hat. Der Auslöser für das ungewollte Triggern von OnChange() ist aber nach meinem jetzigen Kenntnisstand kein Mangel des Rich Edit Common Controls, sonder ein Lapsus der
VCL-Entwickler. Diese erzeugen in der Prozedur TCustomRichEdit.DestroyWnd() eine Objektvariable FMemStream, die sie nach der Verwendung nicht freigeben. Fatalerweise wird aber in CreateWnd() diese Variable geprüft und wenn das Objekt existiert, dann führt das am Ende zur Auslösung des Ereignisses OnChange().
Bei meinem Test trat dieses Verhalten zum Schluss nicht mehr auf, da ich aus bestimmten Gründen mit einer eigenen Form und nicht mit deiner Form2 getestet habe und aus Dusseligkeit auf Button1 meine und auf Button2 deine Form2 gelegt hatte. Sorry.
Freundliche Grüße