Сообщение от Algo
при запуске проги на экране появляется меню с некоторым набором пунктов, при выборе пункта показывается TextBox или Form-а (или что-то подобное), соответственно, одной из софт-клавиш есть возможность вернуться на шаг назад в родительское меню, но... почему-то в моем случае приложение завершается...
|
Поправил ваш код, добавил цикл на гл. меню с запретом непредвиденного завершения + мелкие детали. Все комменты в коде.
program TestMenu;
var
m1, m2, m3: integer;
choose, back, exit, clicked: Command;
begin
{
* Основной цикл для постоянного отображения главного меню,
собственно, это и есть ключевой момент, предостеригающий
от непредвиденного завершения работы программы
}
repeat
ShowMenu('Menu', CH_IMPLICIT);
m1 := menuAppendString('Menu point #1');
m2 := menuAppendString('Menu point #2');
m3 := menuAppendString('Menu point #3');
// Отрисовка функц. кнопок главного меню
choose := createCommand('Choose', CM_OK, 1);
addCommand(choose); // Выбор
exit := createCommand('Exit', CM_EXIT, 2);
addCommand(exit); // Выход
repaint;
repeat
delay(100);
clicked := GetClickedCommand;
// Если нажали "Выход", завершаем работу программы
if clicked = exit then
halt;
until
clicked = choose;
if menuGetSelectedIndex = m1 then
showTextBox('Test text box', 'Selected 1-st menu point', 2000, TF_ANY);
if menuGetSelectedIndex = m2 then
showTextBox('Test text box 2', 'Selected 2-nd menu point', 2000, TF_ANY);
if menuGetSelectedIndex = m3 then
showTextBox('Test text box 3', 'Selected 3-rd menu point', 2000, TF_ANY);
// Прорисовка командной кнопки "Назад"
back := createCommand('<- Back', CM_BACK, 1);
addCommand(back);
repaint;
clicked := GetClickedCommand;
repeat
delay(100);
clicked := GetClickedCommand;
until
clicked = back;
until false; // * Запрет завершения работы программы
end.
можно вынести отрисовку меню, форму завершения программы, да и реакции на функц. клавиши, в общем-то, тоже в отдельные процедуры/функции, удобней кодить, "строить", так сказать, код из блоков, меньше путаницы будет.