TObject(Sender) is unsafe since:

TButton(Edit1).Caption := 'junk code';

will not raise an exception, while:

(Edit1 as TButton).Caption := 'junk code';

will raise an exception.

Taken from here.