Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 12.04.2010, 21:22   #1
Algo
AnyKey`щик
 
Регистрация: 12.04.2010
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Вопрос Элементарное меню

Вечер добрый, уважаемые кодеры!

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

program TestMenu;

var
    
m1m2m3integer;
    
chooseback, exit, clickedCommand;

begin
        ShowMenu
('Menu'CH_IMPLICIT);
        
m1 := menuAppendString('Menu point #1');
        
m2 := menuAppendString('Menu point #2');
        
m3 := menuAppendString('Menu point #3');
        
        
choose := createCommand('Choose'CM_OK2);        
        
addCommand(choose);
        
repeat
            delay
(100);
            
clicked := GetClickedCommand;
        
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);    
            
        
repeat
            delay
(100);
            
clicked := GetClickedCommand;
        
until
            clicked 
back;
        
    exit := 
createCommand('Exit'CM_EXIT2);
    
addCommand(exit);
    
repeat
            delay
(100);
            
clicked := GetClickedCommand;
        
until
            clicked 
= exit;
end
(Offline)
 
Ответить с цитированием
Старый 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)
Старый 14.04.2010, 21:52   #3
Algo
AnyKey`щик
 
Регистрация: 12.04.2010
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Элементарное меню

Спасибо большое! То что надо!
(Offline)
 
Ответить с цитированием
Старый 21.05.2010, 16:33   #4
IvanNes
Нуждающийся
 
Аватар для IvanNes
 
Регистрация: 16.05.2010
Сообщений: 50
Написано 2 полезных сообщений
(для 2 пользователей)
Элементарное меню + подменю

Блин, а кто нибудь скажите народ, как сделать меню с подменю!
(Offline)
 
Ответить с цитированием
Старый 21.05.2010, 17:10   #5
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Элементарное меню

Да просто. При выборе нужного пункта старое меню удаляешь и добавляешь новые пункты.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Rock2roll (22.05.2010)
Старый 27.05.2010, 15:00   #6
IvanNes
Нуждающийся
 
Аватар для IvanNes
 
Регистрация: 16.05.2010
Сообщений: 50
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Элементарное меню

Сообщение от odd Посмотреть сообщение
Да просто. При выборе нужного пункта старое меню удаляешь и добавляешь новые пункты.
А не проще ли сделать меню в меню? как на этой схеме?

Меню1----Подменю1
Меню2 Подменю2
Меню3
(Offline)
 
Ответить с цитированием
Старый 05.05.2013, 21:02   #7
Nik_1712
AnyKey`щик
 
Регистрация: 05.05.2013
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Элементарное меню

Сообщение от odd Посмотреть сообщение
Да просто. При выборе нужного пункта старое меню удаляешь и добавляешь новые пункты.
И это отлично получается! Новое меню загружается уже с выбранным пунктом, и тут же выполняется! Даже выбирать в этом новом меню ничего не нужно, только заранее подставить в нужный подпункт то, что должно грузится по умолчанию. И зачем это потенциальному пользователю какой-то выбор? А вдруг он что нибудь не то выберет!
А если серьёзно, то как сделать, чтобы старый выбор удалялся из функции menuGetSelectedIndex (или где он там хранится?), прежде чем будет загружено новое меню. Или может быть есть другой способ сделать многоуровневое меню (не графическое)? Или хотя бы организовать перемотку обычного меню (тоже не графического), хотя это и не лучший вариант (такое меню,без подпунктов, может оказаться ну О-о-очень длинным)?
Здесь:[ http://forum.boolean.name/showthread.php?t=8674 ] хорошо показана работа Простого (Одноуровневого) меню с возвратом через кнопку, но это не тот случай.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:50.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com