<div dir="ltr"><div class="gmail_extra">I'm not sure if this point has been made already, but interface cast (or querying as defined by COM), only works if the interface has a GUID assigned. When this is the case, in delphi and I believe in {$mode delphi} you can cast between object and interfaces like so:</div><div class="gmail_extra"><br></div><div class="gmail_extra">procedure Test(Sender: TObject);</div><div class="gmail_extra">var</div><div class="gmail_extra">  A: IMyInterfaceType;</div><div class="gmail_extra">  B: TMyObjectType;</div><div class="gmail_extra">begin</div><div class="gmail_extra">  if Sender is IMyInterfaceType then</div><div class="gmail_extra">    A := Sender as IMyInterfaceType;</div><div class="gmail_extra">  if A is TMyObjectType then<br></div><div class="gmail_extra">    B := A as TMyObjectType;</div><div class="gmail_extra">  // other code here<br></div><div class="gmail_extra">end;</div></div>