Program MenusDemo;

{ Demonstriert Benutzung des Units "Menus" }

{ Jens Gelhar 1990 }

Uses Crt;
From Windows Uses Menus;

Var c    : Char;
    x, y : integer;

Begin
  WindowTitles('Menü-Demo', Str(-1));
  AddMenu(10, 'Projekt', true);
    AddItem( 0, 0, 'Open',       ' ');
    AddItem(12, 0, 'Close',      'S');
    AddItem(24, 0, 'Quit',       'Q');
  AddMenu(100, 'Edit', true);
    AddItem( 0, 0, 'Cut',        'X');
    AddItem(12, 0, 'Copy',       'C');
    AddItem(24, 0, 'Paste',      'P');
    AddItem(36, 0, 'Delete All', ' ');
  AddMenu(200, 'Optionen', true);
    AddItem( 0, 0, 'Farbe',      ' ');
      AddSubItem( 0, CheckOff, '  Schwarz', '0'); MutualExclude(%1110);
      AddSubItem(12, CheckOn,  '  Weiß',    '1'); MutualExclude(%1101);
      AddSubItem(24, CheckOff, '  Blau',    '2'); MutualExclude(%1011);
      AddSubItem(36, CheckOff, '  Rot',     '3'); MutualExclude(%0111);
    AddItem(12, 0, 'Stil',       ' ');
      AddSubItem( 0, 0,         'Normal',   'N'); MutualExclude(%110);
      AddSubItem(12, ToggleOff, '  Fett'  , 'F'); MutualExclude(%001);
      AddSubItem(24, ToggleOff, '  Kursiv', 'K'); MutualExclude(%001);
  AddMenu(300, 'Special', true);
    AddItem( 0, CheckOn, '  Himpelsoft', 'H');    MutualExclude(%110);
    AddItem(12, CheckOff, '  Maxon',      ' ');   MutualExclude(%101);
    AddItem(24, CheckOff, '  B**land',    ' ');   MutualExclude(%010);

  AddIDCMP(MOUSEBUTTONS);

  REPEAT

    c := ReadKey;
    If MenuPicked Then
      While MenuPicked Do
        Begin
          Writeln(PickedMenu:20, PickedItem:10, PickedSubItem:10 );

          If (PickedMenu=2) and (PickedItem=0) Then
            { Untermenü "Farbe" }
              Writeln('Farbwechsel: *****', #e, PickedSubItem+30,'m***');

          If (PickedMenu=2) and (PickedItem=1) Then
            { Untermenü "Stil" }
            Begin
              Write(#e'0mStilwechsel: *****');        { Normalen Stil setzen }
              If MenuChecked(2,1,1) Then Write(#e'1m'); { Fett }
              If MenuChecked(2,1,2) Then Write(#e'3m'); { Kursiv }
              Writeln ('*****')
            End;

          NextPicked
        End

    Else
    If MouseClicked Or RightButtonPressed Then
      Begin
        x := MouseX;
        y := MouseY;
        GotoXY( x div 8, y div 8);        { Cursor setzen }
        If RightButtonPressed Then Write('X')
                              Else Write('O');
        GotoXY (1, 1);
      End
    Else
      Writeln('Zeichen #',ord(c));
  Until WindowClosed Or (c=#13) Or ((PickedMenu=0) and (PickedItem=2))
End.
