Das liegt daran, dass der Iterator natürlich vom Typ her ein
Element der Menge sein muss und nicht selbst wieder eine Menge.
Leider ist TShiftState laut Online-Hilfe so deklariert:
TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
Normalerweise definiert man ein Extra-Enum
Delphi-Quellcode:
TMyEnum = (meFoo, meBar);
TMySet = set of TMyEnum;
Delphi-Quellcode:
var
mySet: TMySet;
iterator: TMyEnum;
begin
for iterator in mySet do
{...}
Sieht schlecht aus für TShiftState