Um zu prüfen, ob Sender gleich Button2 ist, dafür brauchst du gar keine Typumwandlung, denn sowohl Sender als auch Button2 sind Abkömmlinge von TObject, so dass man die Pointer auf Gleichheit prüfen kann.
Code: Alles auswählen
if Sender = Button2 then ShowMessage('Button2 gedrückt');
Wenn du wissen willst, ob Sender allgemein ein TButton ist oder ein Nachfahre davon (also nicht die Instanz Button2), nimmt man den Operator "is":
Code: Alles auswählen
if (Sender is TButton) then ShowMessage('Es wurde irgendein Button gedrückt.');
"as" prüft dasselbe wie "is", und erzeugt eine Exception "invalid type cast", falls Sender keine Instanz von TButton oder einem Nachfahren ist. Andernfalls wird eine Typumwandlung nach TButton ausgeführt.
Die ungeprüfte, einfache Typumwandlung TButton(Sender) fliegt dir irgendwann unkontrolliert um die Ohren, wenn Sender kein TButton ist, vor allem, wenn schreibend auf die Properties des Nicht-Buttons zugegriffem wird oder dessen Methoden aufgerufen werden.