fpc/packages/ncurses/tests/t1menu.pp
Michaël Van Canneyt 79fd772870 * PChar -> PAnsiChar
2023-07-15 18:22:37 +02:00

64 lines
1.2 KiB
ObjectPascal

program Menu_Basics;
{
Example 18. Menu Basics
from ncurses howto
}
{$MODE OBJFPC}
uses
ncurses, menu;
const
choices: array[0..4] of PAnsiChar =
(
'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.