title: How to know when the USER changed the text in a TMemo/TEdit?
body: <p>I was always bugged by the fact that TMemo (and other similar controls) only have the OnChange event. I would like to know when the USER changed the text, not when the text was changed programmatically. </p>
  
  <p>I know two methods to discriminate between the user changed text and programmatically changed text:</p>
  
  <ol>
  <li>Put OnChange:= NIL before you change the text programmatically. Then restore the OnChange. This is error prone as you need to remember to do it every time you change text from the code (and to which memos/edits needs this special treatment to be applied). Now we know that every time the OnChange is called, the control was edited by user.</li>
  <li>Capture the OnKeyPress, MouseDown, etc events. Decide if the text was actually changed and manually call the code that needs to be called when user edited the ext. This could add a big amount of procedures to an already large file.</li>
  </ol>
  
  <p>There is a more elegant way to do it?</p>