A reserva de lo que diga Juan Antonio, te doy mi opinión.
Usar TLabel(Sender) es una apuesta a la consistencia de tu código. Estás confiando ciegamente en que Sender es de tipo TLabel y lo será no importa cuántos cambios hagas en lo futuro a tu código.
Es más confiable protegerse uno mismo y verificar que el tipo de datos es realmente el esperado:
Código Delphi
[-]
if Sender is TLabel then
TLabel(Sender).Blablabla;
La forma que usa Juan Antonio, usando el operador as, también te protege ya que implícitamente,
as comprueba el tipo de datos y si no coincide lanza una excepción.
¿Por qué protegerse? Bueno, razones puede haber muchas, pero yo lo veo similar a hacer:
Código:
puntero^.campo := valor
así sin más. La lógica de tu codigo te puede decir que siempre que llegues a esa asignación, puntero será distinto de
nil así que no hay que comprobarlo previamente, pero, ¿dormirás tranquilo?
// Saludos