1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
program Menu_Basics;
{
Example 18. Menu Basics
from ncurses howto
}
{$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.
|