Dem Post von OregonGhost sind nur zwei kleine Anmerkungen hinzuzufügen:
 Über den Operator 
IS kannst Du den Typ eines Objektes ermitteln. 
Ist 
obj z.B. ein Verweis auf ein 
TObject, so kannst Du über 
		                     
             Quelltext
                        Quelltext                    
           	 										| 1:2:
 
 | if obj is TEdit then TEdit(obj).Text:='TEST';
 | 
		
	  
abfragen ob obj ein Objekt vom Typ TEdit ist und dann über Typecasting (2.Zeile) auf die Eigenschaften und Methoden des TEdits zugreifen. 
Eine case-Abfrage des Typs ist soweit ich weiß nicht möglich.
Außerdem wenn 
Edit1 ein Objekt vom Typ 
TEdit ist sind folgende Aussagen wahr:
		                     
             Quelltext
                        Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 
 | Edit1 is TObjectEdit1 is TPersistent
 Edit1 is TComponent
 Edit1 is TControl
 Edit1 is TWinControl
 Edit1 is TCustomEdit
 | 
		
	  
, da TEdit ein Nachfahre zu den genannten Objekten ist und alle deren Eigenschaften ererbt!
Das empfehlenswerte Buch 
Delphi in a Nutshell erklärt sehr tiefgehend die Beziehung von Objekten, deren Speicherabbildungen, Zugriffe, Vererbung, Objekthierarchien und Polymorpheismus.
"Wenn Debugging ein Vorgang ist, Fehler aus einem Programm auszubauen, dann ist Programmieren der Vorgang, Fehler einzubauen."