1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- {
- Example 18. Menu Basics
- from ncurses howto
- }
- program Menu_Basics;
- {$MODE OBJFPC}
- uses
- ncurses, menu;
- const
- choices: array[0..4] of PChar =
- (
- 'Choice 1',
- 'Choice 2',
- 'Choice 3',
- 'Choice 4',
- 'Exit'
- );
- var
- my_items: ppITEM;
- my_menu: pMENU;
- c, n_choices, i: Longint;
- cur_item: pITEM;
- begin
- try
- initscr();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
- n_choices := 5;
- GetMem(my_items, (n_choices+1)*sizeof(pITEM));
- for i := 0 to n_choices - 1 do
- my_items[i] := new_item(choices[i], choices[i]);
- my_items[n_choices] := nil;
- my_menu := new_menu(my_items);
- mvprintw(LINES - 2, 0, 'F1 to Exit');
- post_menu(my_menu);
- refresh();
- c := getch();
- while c <> KEY_F(1) do
- begin
- case c of
- KEY_DOWN: menu_driver(my_menu, REQ_DOWN_ITEM);
- KEY_UP: menu_driver(my_menu, REQ_UP_ITEM);
- else
- end;
- c := getch();
- end
- finally
- free_item(my_items[0]);
- free_item(my_items[1]);
- free_menu(my_menu);
- FreeMem(my_items, (n_choices+1)*sizeof(pITEM));
- endwin();
- end;
- end.
|