Visual Basic/PHP/JavaScript und Co. parsen die Objekteigenschaften wärend des Aufrufs.
In Delphi kennt/akzeptiert bei einer Objektvariable nur die Eigenschaften, welche im Typen vorhanden sind.
(Falls man weiß, daß mehr im Objekt drinstekt, dann kann man über einen Cast den Typen der Variable nachträglich erweitern.
var Obj: TObject;
Delphi-Quellcode:
Obj := TForm.Create; // oder Obj := TfrmMain.Create;
if Obj is TForm then
TForm(Obj).Caption := 'neuer Titel'; // oder (Obj as TForm).Caption := 'neuer Titel';
Wie gesagt, ohne Cast mußt du, innerhalb der entsprechenden Vererbungslinie,
mindestens einen Typen für deinen Parameter verwenden, wo die gewünschte Funktion schon enthalten ist.