title: Delphi: How to call inherited inherited ancestor on a virtual method?
body: <p>I'm overriding a virtual method, and I want to call <strong>inherited</strong>. But I don't want to call the <em>immediate</em> ancestor, I want to call the one <strong>before</strong>.</p>
  
  <pre><code>TObject
     TDatabaseObject
        TADODatabaseObject &lt;---call this guy
           TCustomer        &lt;---skip this guy
              TVIP           &lt;---from this guy
  </code></pre>
  
  <p>I tried casting my<code>self</code> as the ancestor, and call the method on that, but it led to recursive stack overflow:</p>
  
  <pre><code>procedure TVip.SetProperties(doc: IXMLDOMDocument);
  begin
     TADODatabaseObject(Self).SetProperties(doc); //skip over TCustomer ancestor
     ...
  end;
  </code></pre>
  
  <p>i tried adding the <code>inherited</code> keyword, but that doesn't compile:</p>
  
  <pre><code>procedure TVip.SetProperties(doc: IXMLDOMDocument);
  begin
     inherited TADODatabaseObject(Self).SetProperties(doc); //skip over TCustomer ancestor
     ...
  end;
  </code></pre>
  
  <p>Possible?</p>