I made the suggestion and also tested it locally to include a MODIFIED property in this control.
A few other controls already have this PROPERTY for the same exact reason.
did you put your patch to
https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues ?
well, "modified" name is rather ambiguous. There are a lot of reasons why a control could be modified. Databse compontent, TAction components... Direct changes in the platform/OS outside of LCL framework.
also, imagine a group of radiobuttons, a user clicks rb1 and rb2 looses its tick. Is rb2 modified by user or by rb1? what should be a concept here?
if to imagine some conceptually consistent design - then perhaps all such changes should had included "originator control" parameter.
....which could've been done in original message-based OOP like in Windows GDI or Smalltak, or with member procedure calls, but can hardly be made with properties assignment like used everywhere in LCL//VCL
RadioButton2.Checked := True<nil>; // changed by user
RadioButton2.Checked := False<RadioButton1>; // changed by another RB
hello, tuples :-D Maybe VCL/LCL could've been designed in a way it never uses properties directly, leaving them as solely external API, and for internal transaction always calling setter procedures with additional parameters. But it is easy today to talk how things should've been done in 1995 :-)