Program Menu; Uses Crt; Const MenuChoice : Array[1..3] of String[9] = ('Choice #1', 'Choice #2', 'Choice #3'); MenuPosX = 35; MenuPosY = 10; NumberChoices = 3; Type keys = (ReturnKey,Up,Down,Escape); Var Key : keys; fk : Boolean; ch : Char; x, y, CurrentChoice : Integer; Procedure SetChoiceColor(back,Fore : Integer); begin TextBackGround(back); TextColor(Fore); end; Procedure GetKey; begin fk := False; ch := ReadKey; if ch = #0 then begin fk := True; ch := ReadKey; end; if fk then begin Case ord(ch) of 72 : key := Up; 80 : key := Down; end; end; if not fk then begin Case ord(ch) of 13 : key := ReturnKey; 27 : key := Escape; end; end; end; begin SetChoiceColor(7,0); {.. reverse vid black on white } For x := 1 to NumberChoices do begin {.. Write menu options } GotoXY(MenuPosX,MenuPosY+x-1); if x > 1 then SetChoiceColor(0,7); {..turn reverse off after } Write(MenuChoice[x]); { first option written } end; GotoXY(MenuPosX,MenuPosY); {..position curosr on 1st option } CurrentChoice := 1; Repeat GetKey; {..wait For a key to be pressed } SetChoiceColor(0,7); {..reverse vid white on black } Write(MenuChoice[CurrentChoice]); {..un-highlight current option } Case key of Up : if CurrentChoice > 1 then dec(CurrentChoice) else CurrentChoice := NumberChoices; Down : if CurrentChoice < 3 then inc(CurrentChoice) else CurrentChoice := 1; end; SetChoiceColor(7,0); {..reverse vid black/white } GotoXY(MenuPosX,MenuPosY+CurrentChoice-1); Write(MenuChoice[CurrentChoice]); {..highlight new option } GotoXY(MenuPosX,MenuPosY+CurrentChoice-1); Until (Key = ReturnKey) or (Key = Escape); SetChoiceColor(0,7); Case CurrentChoice of 1 : Writeln('Helloo 1'); end; end.