<div dir="ltr"><div class="gmail_extra">Sven, in the with regards to "of course", I think you have it reversed. Is and as were being used as a class in my test, not an object.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">All examples in {$mode delphi}</div><div><br></div></div><div class="gmail_extra">if Form1.Components[I] is T then // does not compile in my test</div><div class="gmail_extra"><br></div><div class="gmail_extra">while</div><div class="gmail_extra"><br></div><div class="gmail_extra">if Form1.Components[I].Inheritsfrom(T) // did compile <br></div><div class="gmail_extra"><br></div><div class="gmail_extra">In essence, I could not use "is" or "as". Here is a test:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra"><div class="gmail_extra">function TestIsAs<T>(Item: TObject): T;</div><div class="gmail_extra">begin</div><div class="gmail_extra">  if Item is T then</div><div class="gmail_extra">  begin</div><div class="gmail_extra">    Exit(Item as T);</div><div class="gmail_extra">  end;</div><div class="gmail_extra">  Result := nil;</div><div class="gmail_extra">end; </div></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Result - Error: Class or interface type expected, but got "T" (on line "if Item<error here> is T then")</div><div class="gmail_extra"><br></div><div class="gmail_extra">With regards to constraints, I tried them previously, but went back to test them again realized that with class methods the constraint must be in the method declaration of the class only. </div><div class="gmail_extra"><br></div><div class="gmail_extra">That is:</div><div class="gmail_extra"><br></div><div class="gmail_extra">type</div><div class="gmail_extra">  TConstraintMethodTest = class</div><div class="gmail_extra">  public</div><div class="gmail_extra">    procedure SomeTest<T: TComponent>(Value: T);</div><div class="gmail_extra">  end;</div><div class="gmail_extra"><br></div><div class="gmail_extra">// Below is wrong</div><div class="gmail_extra"><div class="gmail_extra">procedure TConstraintMethodTest.SomeTest<T: TComponent>(Value: T);</div><div class="gmail_extra">begin</div><div class="gmail_extra">end;</div><div><br></div></div><div class="gmail_extra"><div class="gmail_extra">// This works</div><div class="gmail_extra"><div class="gmail_extra">procedure TConstraintMethodTest.SomeTest<T>(Value: T);</div><div class="gmail_extra">begin</div><div class="gmail_extra">end;</div></div></div><div class="gmail_extra"><br></div></div>