title: Accessing protected event of TWinControl
body: <p>imagine, you want to assign your own event procedure: </p>
  
  <pre><code>procedure TSuperObject.DoSomething(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  begin
  ShowMessage('Yes, I am doing');
  end;
  </code></pre>
  
  <p>to any TWinControl on the form. Normally if you have Panel1 (TPanel) on the form, you can do it easy:</p>
  
  <pre><code>Panel1.OnMouseDown:=SuperObject1.DoSomething;
  </code></pre>
  
  <p>But if you want to do it universally, how can it be accomplished? You can not access protected members of TWincontrol, so intuitive answer:</p>
  
  <pre><code>AnyWinControl.OnMouseDown:=SuperObject1.DoSomething;
  </code></pre>
  
  <p>simply does not work. </p>
  
  <p>Can it be done by RTTI? How?</p>
  
  <p>Thanx</p>