Показать сообщение отдельно
Старый 13.04.2010, 19:41   #2
Exterior
AnyKey`щик
 
Аватар для Exterior
 
Регистрация: 13.04.2010
Адрес: Поселок виртуального типа «Гуглы»
Сообщений: 1
Написано одно полезное сообщение
(для 2 участников)
Ответ: Элементарное меню

Сообщение от Algo Посмотреть сообщение
при запуске проги на экране появляется меню с некоторым набором пунктов, при выборе пункта показывается TextBox или Form-а (или что-то подобное), соответственно, одной из софт-клавиш есть возможность вернуться на шаг назад в родительское меню, но... почему-то в моем случае приложение завершается...
Поправил ваш код, добавил цикл на гл. меню с запретом непредвиденного завершения + мелкие детали. Все комменты в коде.

program TestMenu;

var
    
m1m2m3integer;
    
chooseback, exit, clickedCommand;

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_OK1);        
            
addCommand(choose); // Выбор
        
exit := createCommand('Exit'CM_EXIT2);
            
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'2000TF_ANY);
        
        if 
menuGetSelectedIndex m2 then
            showTextBox
('Test text box 2''Selected 2-nd menu point'2000TF_ANY);
        
        if 
menuGetSelectedIndex m3 then
            showTextBox
('Test text box 3''Selected 3-rd menu point'2000TF_ANY);    
        
// Прорисовка командной кнопки "Назад"
        
back := createCommand('<- Back'CM_BACK1);
            
addCommand(back);
        
repaint;
        
clicked := GetClickedCommand;        
        
repeat
            delay
(100);
            
clicked := GetClickedCommand;
        
until 
            clicked 
back;
    
until false// * Запрет завершения работы программы
end
можно вынести отрисовку меню, форму завершения программы, да и реакции на функц. клавиши, в общем-то, тоже в отдельные процедуры/функции, удобней кодить, "строить", так сказать, код из блоков, меньше путаницы будет.
__________________
Без труда, не напишешь и "Hello World!"
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Exterior за это полезное сообщение:
Algo (14.04.2010), Rock2roll (22.05.2010)