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.