mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-01 02:53:40 +02:00
64 lines
1.2 KiB
ObjectPascal
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. |