MyColor ist ja so definiert.
MyColor = (Red,Green,Blue,Yellow,Orange,Black);
Das bedeutet, das nach Red Green kommt, nach Green Blue usw. Wird halt einfach durchnummeriert
Red=0
Green=1
Blue=2
Es ist ein Ordinaltyp weil es immer einen definierten Vorgänger und Nachfolger gibt.
Bei Klassen ist es so, dass zum Beispiel TAuto nur auf die Klasseninformationen zeigt könnte also $123456 oder $654321 liegen. TMotorrad könnte dann bei $765432 oder $234567 liegen. Du kannst also nicht sagen, dass nach TAuto TMotorrad kommt. Sind halt nur Zeiger.
Vielleicht kann man es einfach mit einem Trick lösen in dem man ClassType zu Interger castet. Kann es leider nicht testen.
Delphi-Quellcode:
case Integer(objekt.ClassType) of
Integer(TAuto) : edKat.Text := 'Auto';
Integer(TMotorrad) : edKat.Text := 'Motorrad';
Integer(TFahrrad) : edKat.Text := 'Fahrrad';
end;