|
Основной форум Сюда все проблемы связанные с программированием. |
11.09.2007, 18:23
|
#1
|
AnyKey`щик
Регистрация: 28.08.2007
Сообщений: 4
Написано 0 полезных сообщений (для 0 пользователей)
|
Как использовать ярлыки в MP?
В обычном паскале была функция ярлыков (т.е. пишешь слово Label 1; а потом в тексте программы gotto 1; и программа переходит к указателю 1 вроде так) а MP такой нет? Или подскажите, как можно реализовать такую функцию на MP?
|
(Offline)
|
|
11.09.2007, 18:26
|
#2
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Re: Как использовать ярлыки в MP?
это называется метка. Можно обойтись и без нее, попробуй...
|
(Offline)
|
|
11.09.2007, 18:28
|
#3
|
Нуждающийся
Регистрация: 22.07.2006
Сообщений: 50
Написано 6 полезных сообщений (для 19 пользователей)
|
Re: Как использовать ярлыки в MP?
В МР вроде такого нет...
Да это и не нужно! GOTO - зло!
Практически любую программу можно организовать без этого оператора...
|
(Offline)
|
|
11.09.2007, 21:15
|
#4
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: Как использовать ярлыки в MP?
Зло не зло, а иногда неудобно без GOTO.
|
(Offline)
|
|
11.09.2007, 22:09
|
#5
|
AnyKey`щик
Регистрация: 28.08.2007
Сообщений: 4
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Как использовать ярлыки в MP?
Тогда может подскажете как можно организовать меню с под меню и с под под меню, т.е. есть какое-то меню имеющее некоторое количество пунктов. При выборе пункта 1 появляется подменю первого пункта, а при выборе в нём какого то пункта появляется ещё одно под меню. Так вот весь вопрос в том, как сделать переход в обратную сторону, т.е. находясь в подменю нажав кнопочку назад попасть в предыдущее мню. Может подскажете как это проще сделать.
program menu;
var Number1, Number2, Number3, Number4 : integer;
show, clicked, Back : command;
begin
showMenu('Выберите пункт', CH_IMPLICIT);
Number1 := menuAppendString('Пункт 1');
show := createCommand('Показать', CM_SCREEN, 2);
addCommand(show);
repeat
delay(100);
clicked := getClickedCommand;
until clicked = show;
if menuGetSelectedIndex = Number1 then
begin
showMenu('Выберите пункт', CH_IMPLICIT);
Number1 := menuAppendString('Пункт 1');
Number2 := menuAppendString('Пункт 2');
Number3 := menuAppendString('Пункт 3');
Number4 := menuAppendString('Пункт 4');
Back := createCommand('Назад', CM_EXIT, 1);
show := createCommand('Выход', CM_SCREEN, 2);
addCommand(show);
addCommand(Back);
repeat
delay(100);
clicked := getClickedCommand;
until clicked = show;
end;
end.
|
(Offline)
|
|
11.09.2007, 23:48
|
#6
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Re: Как использовать ярлыки в MP?
Каждое меню и каждое подменю заноси в отдельные процедуры. Потом при необходимости вызывай.
|
(Offline)
|
|
12.09.2007, 00:04
|
#7
|
AnyKey`щик
Регистрация: 28.08.2007
Сообщений: 4
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Как использовать ярлыки в MP?
Попробую. Проблема в том что таких процедур получится штук 200.
|
(Offline)
|
|
12.09.2007, 00:27
|
#8
|
Нуждающийся
Регистрация: 22.07.2006
Сообщений: 50
Написано 6 полезных сообщений (для 19 пользователей)
|
Re: Как использовать ярлыки в MP?
Должно быть что-то вроде этого:
program NewProject;
Procedure SubMenu1;
var cmdOK, cmdBack, click: command;
mnuSubMenu1, mnuSubMenu2: integer;
begin
repeat
showMenu('Под меню 1',CH_IMPLICIT);
mnuSubMenu1:=MenuAppendString('Под-под меню 1');
mnuSubMenu2:=MenuAppendString('Под-под меню 2');
cmdOK:=CreateCommand('Выбор',CM_OK,1); AddCommand(cmdOK);
cmdBack:=CreateCommand('Назад',CM_Back,1); AddCommand(cmdBack);
repaint;
repeat
click:=GetClickedCommand;
until click<>EmptyCommand;
RemoveCommand(cmdOK); RemoveCommand(cmdBack);
if click=cmdOK then begin
// if MenuGetSelectedIndex=mnuSubMenu1 then .......
// if MenuGetSelectedIndex=mnuMenu2 then .........
end;
until click=cmdBack;
end;
Procedure Menu1;
var cmdOK, cmdBack, click: command;
mnuSubMenu1, mnuSubMenu2: integer;
begin
repeat
showMenu('Меню 1',CH_IMPLICIT);
mnuSubMenu1:=MenuAppendString('Под меню 1');
mnuSubMenu2:=MenuAppendString('Под меню 2');
cmdOK:=CreateCommand('Выбор',CM_OK,1); AddCommand(cmdOK);
cmdBack:=CreateCommand('Назад',CM_Back,1); AddCommand(cmdBack);
repaint;
repeat
click:=GetClickedCommand;
until click<>EmptyCommand;
RemoveCommand(cmdOK); RemoveCommand(cmdBack);
if click=cmdOK then begin
if MenuGetSelectedIndex=mnuSubMenu1 then SubMenu1;
// if MenuGetSelectedIndex=mnuSubMenu2 then SubMenu2;
end;
until click=cmdBack;
end;
Procedure MainMenu;
var cmdOK: command;
mnuMenu1, mnuMenu2, mnuExit: integer;
begin
repeat
showMenu('Главное меню',CH_IMPLICIT);
mnuMenu1:=MenuAppendString('Меню 1');
mnuMenu2:=MenuAppendString('Меню 2');
mnuExit :=MenuAppendString('Выход');
cmdOK:=CreateCommand('Выбор',CM_OK,1); AddCommand(cmdOK);
repaint;
repeat
until GetClickedCommand<>EmptyCommand;
RemoveCommand(cmdOK);
if MenuGetSelectedIndex=mnuMenu1 then Menu1;
// if MenuGetSelectedIndex=mnuMenu2 then Menu2;
// и т.д...
until MenuGetSelectedIndex=mnuExit;
end;
begin
MainMenu;
end.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:58.
|