Похоже, ограничение зарылось здесь:
key:=GetKeyClicked;
if (key=50) or (key=-59) or (key=-1) then mc:=(mc+3) mod 4;//<<-------------
if (key=56) or (key=-60) or (key=-2) or (key=-6) then mc:=(mc+1) mod 4;//<<-------------
if (key=53) or (key=-26) or (key=-5) or (key=20) then
Вместо четверки должно стоять количество пунктов меню.