Probleme mit Sender:TObject

Hallo

Folgendes Problem:
Ich habe mit Delphi 3 ein Formular, auf dem sich ein Array of TLabel befindet. Wenn auf ein Label geklickt wird, soll dieser sich verfärben.
Alle Elemente nutzen zu diesem Zweck eine gemeisame OnClick-Prozedur. Jetzt wollte ich in diese Prozedur die Zeile

If Sender.color=clred then Sender.Color:=clblue else Sender.Color:=clred;

einfügen. Das geht aber nicht, denn Sender ist vom Typ TObject, und dieses besitzt keine Farbe. Wie kann ich trotzdem auf Eigenschaften wie Color, Caption oder Font zugreifen?

Lösung gefunden
Keine Ahnung wieso, aber es muss (Sender as TLabel).Color heißen, dann funktioniert es.

Hallo,

Keine Ahnung wieso, aber es muss (Sender as TLabel).Color
heißen, dann funktioniert es.

das liegt an folgendem:

Sender wird als TObject übergeben. Da alle anderen Objekte in Delphi Nachfahren von TObject sind, kann als Sender jedes beliebige Objekt übergeben werden. Allerdings weiß die Funktion nicht automatisch, um was für einen Typ es sich handelt. Du hast die Möglichkeit, mit (Sender as [ObjektTyp]) der Funktion mitzuteilen, was da übergeben wurde . Alternativ kannst du auch schreiben TLabel(Sender).Color .

du kannst auch so etwas schreiben wie

if Sender is TLabel then …

und damit abfragen, ob ein bestimmter Typ übergeben wurde.

Das ganze nennt man dann Polymorphismus.

Gruß, Niels